This link将为您提供一些示例。
就您如何看待项目/基础设施而言,最好不要将事情混淆太多。因此,这里是几个百分点的让你开始(我希望)
- C++中的模块库(所以请参阅您的网络模块作为 库)
- 要包括你需要一个库链接它和也使 头文件可用。
在cmake的,这是分别两个命令target_link_libraries
和include_directories
。
考虑到这一点的项目结构可能是
/Network/include (api here)
/Network/src
/sw1/src
/sw2/src
与示范基地的CMakeLists.txt为您的文件:(项目的根目录的地方)
cmake_minimum_required(VERSION 2.7) // your choice
project(myproject) // change name
add_subdirectory(Network)
add_subdirectory(sw1)
add_subdirectory(sw2)
网络目录你会有这个
add_library(Network net1.cc net2.cc etc.)
在sw1目录
include_dirs(${MYPROJECT_SOURCE_DIR}/Network/include)
link_directories(${MYPROJECT_BINARY_DIR}/Network)
add_executable (sw1prog sw1.cc sw11.cc etc.)
target_link_libraries (sw1prog Network)
在SW2 DIR
include_dirs(${MYPROJECT_SOURCE_DIR}/Network/include)
link_directories(${MYPROJECT_BINARY_DIR}/Network)
add_executable (sw2prog sw2.cc sw21.cc etc.)
target_link_libraries (sw2prog Network)
这是你需要什么非常简化版本,它消除了对FindXXModule.cmake文件需要被创建,是指隐含地创建库。我认为这对你来说是最好的机制,如果你确实想创建一个FindXXModule.cmake,那么我会建议它是当你真的把你的库安装到机器上,并希望其他人能够找到它,要么有机制为多个项目链接到彼此的图书馆。
我希望这有点用处,请记住cmake site有一些例子,cmake --help
是你的朋友。
我认为这将是很好的有一个FindXModule.cmake抽象一点点库,并有一种方法来轻松创建一个新的SW3,只是说:'使用网络',使用'数据库',并有一个很好的“插件“系统,但你的方式似乎也很简单 – nkint
你可以通过安装路径并将系统安装到该路径来实现这一点。然后您想要使用网络等项目将运行FindXModule.cmake。所以真的是两个不同的问题,至少在我心中:-) – dirvine
非常感谢。这行得通。我试图复杂一点,但更多的问题现在已经提出,我做了另一个问题:http://stackoverflow.com/questions/17264037/cmake-for-a-build-a-simple-framework – nkint