安装EXCLUDE_FROM_ALL子目录

时间:2018-11-19 07:09:48

标签: cmake

我有一个项目A,该项目使用项目B中定义的一些目标。因此,我做了add_subdirectory(<PATH_TO B> EXCLUDE_FROM_ALL)来包含子目录。现在,我使用组件创建安装目标,A中有一些安装组件也需要B中的目标。但是,由于EXCLUDE_FROM_ALLcmake_install.cmake的{​​{1}}不包括A。我应该如何处理?

1 个答案:

答案 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_ALLyour_sub_dir_target将不会包含在ALL目标中,那么sub_dir不会调用install命令,您需要手动执行。