我的项目结构如下:
Libs/
Apps1/
Apps2/
在每个文件夹下都有一个
CMakeLists.txt
。我想为每个文件夹生成一个项目文件,其中每个 AppsN
引用了 Libs
。我采用的方法是调用 CMake 的 add_subdirectory(../Libs/Source/LibN)
等命令。但是当我这样做时,CMake 会提示必须为二进制输出文件夹指定唯一的绝对路径。
参见此帖子: Xcode dependencies across different build directories? 当构建输出文件夹针对每个目标都是唯一的时,XCode 无法处理依赖关系。它需要一个文件夹。CMake 默认情况下就可以做到这一点,只不过在文件夹不是子目录时,它会拒绝执行。
我尝试在创建目标后更改输出路径。这将把对象构建到输出文件夹中,XCode 可以看到它们,但是在 CMake 脚本中对该目标的所有引用都将使用唯一路径。
提出的解决方案包括:
- 在
App1/Projects/Subdir
中包含项目文件,并在不相关的位置复制项目 - 将我的文件夹重新组织到共享父文件夹中,以避免这种 CMake 的疯狂方式,这对我来说存在一些安全问题(因为某些目录不是公共的)
- 永远不要用 CMake 名称引用目标,而要使用共享路径名称。不确定如何正确地做到这一点
- 尝试在 CMake 方面进行修补
- 切换到 premake
add_custom_target
将必要的CMakeLists.txt
复制到当前目录中,这样就可以很好地解决问题了。 - nullspace