我正在学习cmake,并且发现学习速度非常快 . 但是,文档不是最新的 . 这些教程很有帮助,但只是到目前为止 .
我有一个现有的项目,我想转换为使用cmake .
项目结构目前看起来像:
obsys / obsys / client / obsys / server / obsys / utils / include obsys / utils / src
我在每个级别创建了CMakeLists.txt文件 .
顶级看起来像这样:
make_minimum_required (VERSION 2.6)
project (osys)
add_subdirectory (server)
add_subdirectory (utils)
在utils中我有一个CMakeLists.txt,它包含:
include_directories ("${PROJECT_SOURCE_DIR}/utils/include")
add_subdirectory (src)
在utils src目录中,CMakeLists.txt文件包含:
add_library(utils myException.cpp)
服务器需要链接到utils . 它的CMakeLists.txt包含:
make_minimum_required (VERSION 2.6)
project (server)
include_directories ("../utils/include")
add_executable(serv serv.cpp)
add_subdirectory("../utils/src" utils)
target_link_libraries(obbsd utils)
这个布局的想法是我希望我可以通过顶级Makefile构建整个批次 . 或者,跳转到服务器或客户端并构建其中任何一个 . 它不是这样的 . 建议的方法是什么?
1 回答
好的,我现在有了它的工作 .
问题是我的add_executable行没有列出所有源文件 . Link似乎抱怨与utils有关,这让我觉得它实际上并没有找到库 .