2012-03-19 108 views
7

我目前正在将一个Visual C++项目(内部有多个子项目)转移到CMake上。在CMake中使用多个项目

有一件事,我不知道 - 基本上,包括顶级CMakeLists.txt文件的子项目,我只是利用add_subdirectory命令,并引用这些不同的子项目所存储的目录。

但是,我有一个项目是在相同的目录作为我的顶级CMakeLists.txt文件,所以我想知道是否仍有可能包含此文件? CMake的不允许我打电话给add_subdirectory现有PROJECT_BINARY_DIR(见下图):

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

我想不出其他办法,我包括此子项目到我的CMake的构建。有任何想法吗?

回答

12

所有的add_subdirectory都是在其中添加一个CMakeLists.txt文件的子目录,所以它不会让你添加当前目录。您可以简单地添加CMake逻辑来在CMakeLists.txt文件中构建项目的这一部分。如果你想在逻辑中分离出来,那么你可以把它放在build_project.cmake,然后用包括

include(build_project.cmake) 

可以包括许多其他的CMake文件,只要你喜欢,那CMake的代码将被评估就好像它被内嵌粘贴一样。所以所有普通的add_executable和类似的命令都可以工作。