CMAKE添加子目录,该子目录不是真实目录下的子目录

时间:2011-11-02 13:03:56

标签: cmake

是否可以将兄弟目录作为子目录包含在cmake中?

这样的东西
A 
  CMakeLists.txt

B
  CMakeLists.txt

和B包括A作为子目录?

2 个答案:

答案 0 :(得分:73)

有可能,虽然可能不推荐......

您可以使用add_subdirectory命令的双参数形式将您想要的任何目录添加为“子”目录:

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../A ${CMAKE_CURRENT_BINARY_DIR}/A)

双参数形式的第二个参数指定了为添加的子目录放置二进制目录的位置。

你必须要小心,还有 B的另一个真正的子目录,也被命名为“A”,这也是add_subdirectory'd ...因为如果你这样做,那么这将是一个错误,因为CMake不能将两个不同的源目录映射到同一个构建目录。

答案 1 :(得分:1)

不幸的是,没有。

作为解决方案,我可能会建议您在顶层添加add_subdirectory(A)和add_subdirectory(B),并设置要从PAR导出的变量与PARENT_SCOPE。 这将允许B / CMakeLists.txt访问A / CMakeLists.txt中定义的变量