我正在尝试设置项目以使用CMake正确编译。
我的目录如下所示:
root
|- bin
| |- // Where I want to build CMake from - using 'cmake ..'
|- build
| |-
|- include
| |- database
| | |- database.h
|- src
|- database
| |- database.cpp
|- main
|- main.cpp
随着项目的扩大,我的子目录肯定会增长,并且认为CMake可能是一个好主意。目前,我只能让CMake在src/中没有子目录的情况下工作。但是,我确实希望该项目能够成长为许多子目录。
是否需要在每个目录中包含.cpp文件的多个 CMakeLists.txt ?谁能指出我正确的方向?
谢谢!
最佳答案
您的项目似乎不需要多个CMakeLists.txt。多次具有多个CMakeLists.txt的目的是多重的,但似乎不适合您的项目。例如,一种好处是分层组织,因此您可以将不同的单元分开以分别构建并最终链接。
示例
如果根目录中有另一个名为tests
的目录,请考虑这种情况。该目录包含希望开发人员选择是否编译它的单元测试。在这种情况下,您将一个CMakeLists.txt放入tests
,并使用 add_subdirectory(tests)
在主要的CMakeLists.txt中启用它,如下所示:
if(testing_enabled)
add_subdirectory(tests)
endif()
在
tests
中,将存在另一个CMakeLists.txt。这样,您就可以分离关注点。单元测试的开发独立于项目的开发,并且构建过程是独立的。另一个示例
如果您有两个可供用户选择的库,请考虑这种情况。在这种情况下,您的
root
中有两个目录,lib1
和lib2
。现在,您可以在主要的CMakeLists.txt中执行以下操作:if(IWantLib1)
add_subdirectory(lib1)
else()
add_subdirectory(lib2)
endif()
lib1
和lib2
目录都包含CMakeLists.txt。