gpt4 book ai didi

cmake - 我真的需要指定 install-interface includes dependencies 吗?

转载 作者:行者123 更新时间:2023-12-04 15:35:57 25 4
gpt4 key购买 nike

在我的一个包中,我目前有:

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 包含目录吗?或者 - 我错过了什么吗?

最佳答案

文档明确指出两者 target_include_directories带有非 PRIVATE 关键字和 INCLUDES DESTINATION 子句的命令 install命令填充 INTERFACE_INCLUDE_DIRECTORIES属性(property)。

使用哪种方法由您决定。

请注意,同一个目标可以安装多次。 target_include_directories影响所有 安装,但INCLUDES DESTINATION 仅影响特定 安装。


Documentation对于 INCLUDES DESTINATION 子句:

This option specifies a list of directories which will be added to the INTERFACE_INCLUDE_DIRECTORIES target property of the <targets> when exported by the install(EXPORT) command. If a relative path is specified, it is treated as relative to the $<INSTALL_PREFIX>.

Documentation对于 target_include_directories :

PUBLIC and INTERFACE items will populate the INTERFACE_INCLUDE_DIRECTORIES property of <target>.

关于cmake - 我真的需要指定 install-interface includes dependencies 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59743205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com