添加子目录

在构建中添加一个子目录。

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL] [SYSTEM])

将子目录添加到构建中。 source_dir 指定源``CMakeLists.txt`` 和代码文件所在的目录。如果它是一个相对路径,它将相对于当前目录进行评估(典型用法),但它也可能是一个绝对路径。 binary_dir 指定放置输出文件的目录。如果它是相对路径,则会根据当前输出目录进行评估,但它也可能是绝对路径。如果未指定 binary_dir,则在扩展任何相对路径之前使用 source_dir 的值(典型用法)。指定源目录中的 CMakeLists.txt 文件将由 CMake 立即处理,然后在当前输入文件中的处理继续超出此命令。

如果提供了 EXCLUDE_FROM_ALL 参数,则默认情况下子目录中的目标将不会包含在父目录的 ALL 目标中,并且将从 IDE 项目文件中排除。用户必须在子目录中显式构建目标。这意味着当子目录包含有用但不是必需的项目的单独部分(例如一组示例)时使用。通常,子目录应包含其自己的 project() 命令调用,以便在子目录中生成完整的构建系统(例如 Visual Studio IDE 解决方案文件)。请注意,目标间依赖性会取代此排除。如果父项目构建的目标依赖于子目录中的目标,则依赖目标将包含在父项目构建系统中以满足依赖性。

在 3.25 版本加入: 如果提供了 SYSTEM 参数,则子目录的 SYSTEM 目录属性将设置为 true。此属性用于初始化在该子目录中创建的每个非导入目标的 SYSTEM 属性。