【发布时间】:2011-12-20 07:33:26
【问题描述】:
是否可以在 cmake 中包含同级目录作为子目录?
有点像
A
CMakeLists.txt
B
CMakeLists.txt
而 B 包含 A 作为子目录?
【问题讨论】:
标签: cmake
是否可以在 cmake 中包含同级目录作为子目录?
有点像
A
CMakeLists.txt
B
CMakeLists.txt
而 B 包含 A 作为子目录?
【问题讨论】:
标签: cmake
这是可能的,虽然可能不推荐......
您可以使用 add_subdirectory 命令的两个参数形式将您想要的任何目录添加为“子”目录:
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../A ${CMAKE_CURRENT_BINARY_DIR}/A)
双参数形式的第二个参数指定将添加的子目录的二进制目录放在哪里。
您只需要注意没有也 B 的另一个真正的子目录也被命名为“A”并且也是 add_subdirectory'd... 因为如果你这样做了,那么这将是一个错误,因为 CMake 不能将两个不同的源目录映射到同一个构建目录。
【讨论】:
${CMAKE_CURRENT_SOURCE_DIR}/../A/some/path 会怎样?不会避免名字冲突的错误吗?
很遗憾,没有。
作为解决方案,我可能会建议您在顶层添加_subdirectory(A) 和add_subdirectory(B),并使用PARENT_SCOPE 设置要从A 导出的变量。 这将允许 B/CMakeLists.txt 访问 A/CMakeLists.txt 中定义的变量
【讨论】: