在CMake中处理多个项目

Working with Multiple Projects in CMake

本文关键字:项目 处理 CMake      更新时间:2023-10-16

我目前正在将一个Visual C++项目(其中包含多个子项目)转换为CMake。

有一件事我不确定——基本上,为了包括顶级CMakeLists.txt文件中的子项目,我只使用add_subdirectory命令,并引用这些不同子项目存储的目录。

然而,我有一个项目与我的顶级CMakeLists.txt文件位于相同的目录中,所以我想知道是否仍有可能以某种方式包含此文件?CMake不允许我调用现有PROJECT_BINARY_DIR上的add_subdirectory(见下文):

add_subdirectory(${PROJECT_BINARY_DIR}) #not allowed in CMake

我想不出其他方法将此子项目包含在我的CMake构建中。有什么想法吗?

所有add_subdirectory所做的就是添加一个包含CMakeLists.txt文件的子目录,因此允许您添加当前目录是没有意义的。您可以简单地在CMakeLists.txt文件中添加CMake逻辑来构建项目的这一部分。如果你想分离逻辑,那么你可以把它放在build_project.cmake中,然后使用include,

include(build_project.cmake)

您可以包含任意多的其他CMake文件,并且该CMake代码将像内联粘贴一样进行评估。因此,所有普通的add_executable和类似的命令都可以工作。