c – 使用子目录进行CMake

前端之家收集整理的这篇文章主要介绍了c – 使用子目录进行CMake前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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.

猜你在找的C&C++相关文章