我正在学习cmake,并且发现学习速度非常快。但是,文档不是最新的。这些教程很有帮助,但只是到目前为止。
我所拥有的是一个现有项目,我想使用cmake转换为它。
项目结构目前如下:
OBSYS / obsys / client / {client files} obsys / server / {server files} OBSYS / utils的/包括 OBSYS / utils的/ SRC
我在每个级别都创建了CMakeLists.txt文件。
顶级目前看起来像这样:
make_minimum_required (VERSION 2.6)
project (osys)
add_subdirectory (server)
add_subdirectory (utils)
Inside 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构建整个版本。或者,跳转到服务器或客户端并构建其中任何一个。它不是这样的。建议的方法是什么?
答案 0 :(得分:1)
好的,我现在有了它。
问题是我的add_executable行未列出所有源文件。 Link似乎抱怨与utils有关,这让我觉得它实际上并没有找到库。