我有一个项目A
,该项目使用项目B
中定义的一些目标。因此,我做了add_subdirectory(<PATH_TO B> EXCLUDE_FROM_ALL)
来包含子目录。现在,我使用组件创建安装目标,A
中有一些安装组件也需要B
中的目标。但是,由于EXCLUDE_FROM_ALL
,cmake_install.cmake
的{{1}}不包括A
。我应该如何处理?
答案 0 :(得分:1)
您可以在cmake 3.13之后安装在子目录CMakeLists.txt
中定义的特定目标。
在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)
使用EXCLUDE_FROM_ALL
,your_sub_dir_target
将不会包含在ALL
目标中,那么sub_dir不会调用install命令,您需要手动执行。