CMake:根据其他子项目构建子项目header

CMake: build subproject depending on other's subproject header

我有一个项目包含两个子目录(简化):

project(superproj)    
add_subdirectory(foo-api)
add_subdirectory(bar-api)

bar-api 使用 foo-api headers 并希望它们安装在 $PREFIX/include/foo 中(其文件包含 #include <foo/header.h>

但是当我编译这个超级项目时,我不想 foo-api 实际安装在我的系统中。在这种情况下如何构建 bar-api ?是否可以在不弄乱 bar-api 的 CMakeFile 的情况下这样做?我想让这两个项目尽可能独立,所以可以单独克隆和构建它们。

使用include_directories:

project(superproj) 
include_directories(foo-api/path/to/includes)   
add_subdirectory(foo-api)
add_subdirectory(bar-api)

它的操作传播到当前目录中的所有子目录。是的,考虑 target_include_directories 现代版本的 CMake,正如 Florian 在评论中提到的那样。