项目嵌套
在一个大型项目中,通常会涉及到多个组件,比如库(静态库或动态库)、应用程序、测试单元等。为了更好地管理和维护这些组件,我们可以将它们组织成不同的子目录,并为每个子目录创建一个CMakeLists.txt
文件。
add_subdirectory
允许你在一个大型项目中包含多个子项目或子目录,从而实现项目的模块化管理。
基本用法
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
source_dir
指定了包含CMakeLists.txt
文件的子目录的路径。CMake将会处理这个目录下的CMakeLists.txt
,并包含其定义的目标(targets)到主项目中。binary_dir
是可选参数,用来指定生成的中间文件和目标文件的存放路径。如果不指定,CMake默认在当前正在执行的构建目录中创建与source_dir
同名的目录作为binary_dir
。EXCLUDE_FROM_ALL
也是可选的。添加这个选项会使得这个子目录中的目标不会被顶级目标ALL
包含,即使用make
或make all
命令时,这个子目录中的目标不会被构建。这对于可选组件或示例代码非常有用。