【发布时间】:2020-05-01 17:39:13
【问题描述】:
在我的一个包裹中,我目前有:
include(GNUInstallDirs)
target_include_directories(
mylib
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> # ***
)
还有:
install(
TARGETS mylib
EXPORT mylib
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
install(
EXPORT mylib
FILE "mylib-config.cmake"
NAMESPACE mylib::
DESTINATION "lib/cmake/mylib" )
我注意到在安装的config.cmake 文件中,我看到了包含目录两次:
set_target_properties(mylib::mylib PROPERTIES
# etc. etc.
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include"
)
因此,作为一个实验,我删除了上面标记为 *** 的行 - 配置文件现在只有包含目录一次。
那么,这样做安全吗?也就是说,如果我使用 INCLUDES 参数安装目标,我真的不需要指定 install-interface 包含目录吗?或者 - 我错过了什么?
【问题讨论】:
标签: cmake include installation include-path