具有多个目录和多个CMakeLists的Cmake项目

时间:2014-12-08 16:29:00

标签: c++ cmake

我已经获得了一些C ++源文件以及一个CMakeLists.txt文件,该文件进行编译以创建可执行文件。我现在想要将自己的源文件添加到此项目中。但是,我想保留原始源文件和原始CMakeLists文件,与新文件分开。

所以,我希望我的解决方案看起来像这样:

/Project
/Project/src
/Project/src/CMakeLists.txt
/Project/src/OriginalSource
/Project/src/OriginalSource/CMakeLists.txt
/Project/src/OriginalSource/Original.cpp
/Project/src/NewSource
/Project/src/NewSource/CMakeLists.txt
/Project/src/NewSource/New.cpp
/Project/build

我希望所有源文件然后编译成可执行文件放在build目录中。所以我的问题是,我在三个CMakeLists文件中添加了什么,src/OriginalSource/CMakeLists.txt只编译原始资源,src/NewSource/CMakeLists.txt只编译新资源,src/CMakeLists.txt将所有这些内容链接在一起来源,并创建一个可执行文件?

2 个答案:

答案 0 :(得分:0)

您可以从代码中创建一个便利库,然后将其链接到您已经拥有的代码。这个想法被解释为here

请参阅此链接了解更多详情: http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library

我希望它有所帮助。

答案 1 :(得分:0)

无法修改OriginSource中的可执行项目而无需修改其中的CMakeLists.txt。如果您真的不想修改原始项目,可以编写一个新的CMakeLists.txt,包括旧的和新的来源。

一个技巧是在/Project/src/CMakeLists.txt中定义新来源,然后将其包含在/Project/src/OriginalSource/CMakeLists.txt中:

set(NEW_INCS ${CMAKE_SOURCE_DIR)/NewSource)
file(GLOB NEW_SRCS ${CMAKE_SOURCE_DIR)/NewSource/*.cpp)