我已经获得了一些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
将所有这些内容链接在一起来源,并创建一个可执行文件?
答案 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)