我正在尝试使用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放入测试中,然后在主CMakeLists.txt中使用add_subdirectory(tests)
启用它,如下所示:
if(testing_enabled) add_subdirectory(tests) endif()
在测试中,会有另一个CMakeLists.txt.这样,您可以分开关注点.单元测试的开发独立于项目的开发,构建过程也是独立的.
另一个例子
如果您有两个用户可以选择的库,请考虑这种情况.在这种情况下,您在根目录中有两个目录lib1和lib2.现在,您可以在主CMakeLists.txt中执行以下操作:
if(IWantLib1) add_subdirectory(lib1) else() add_subdirectory(lib2) endif()
lib1和lib2目录都包含CMakeLists.txt.