我有一个项目A
,它使用项目B
中定义的一些目标。因此我做了add_subdirectory(<PATH_TO B> EXCLUDE_FROM_ALL)
包含子目录。现在,我使用组件创建安装目标,并且A
中有一些安装组件也需要来自B
的目标。但是,由于EXCLUDE_FROM_ALL
,cmake_install.cmake
的A
不包括B
的CMakeLists.txt
。我该怎么做呢?
您可以在cmake 3.13之后安装子目录add_subdirectory(path/to/sub_dir EXCLUDE_FROM_ALL)
target_link_library(your_target PRIVATE your_sub_dir_target)
...
install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/path/to/sub_dir/cmake_install.cmake)
中定义的特定目标。
在3.13之前,用户可以使用
EXCLUDE_FROM_ALL
使用your_sub_dir_target
,ALL
将不包含在qazxswpoi目标中,然后不会为你的sub_dir调用install命令,你需要手动执行它。