gpt4 book ai didi

cmake - 在 cmake 中是否有其他获取目标属性的方法?

转载 作者:行者123 更新时间:2023-12-03 07:56:48 25 4
gpt4 key购买 nike

我创建了一个 C++ 静态库,为了便于搜索,我创建了以下 cmake 文件:

lib.cmake

# The installation prefix configured by this project.
set(_IMPORT_PREFIX "C:/------/install/win32")

# Create imported target boost
add_library(lib STATIC IMPORTED)
set_target_properties(lib PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "lib_define1;lib_define2"
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include"
)
# Load information for each installed configuration.
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
file(GLOB CONFIG_FILES "${_DIR}/lib-*.cmake")
foreach(f ${CONFIG_FILES})
include(${f})
endforeach()

lib-debug.cmake

# Import target "boost" for configuration "Debug"
set_property(TARGET lib APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(boost PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/Debug/staticlib/lib.lib"
)

当我想在可执行文件中使用这个库时,我可以简单地通过调用 find_package 命令来调用它:

find_package(lib REQUIRED)
if(lib_FOUND)
message("lib has been found")
else()
message("lib cannot be found")
endif(boost_FOUND)

它有效,如果我想知道库的头文件目录,我将不得不这样调用它:

  get_target_property(lib_dir lib INTERFACE_INCLUDE_DIRECTORIES)

我只是想知道是否有其他方法可以获取目标的属性。在这种情况下,我希望存在一些像 lib_INCLUDE_DIRECTORIES 这样的变量。

最佳答案

不,CMake 不会自动为目标(或其他任何东西)的属性定义变量。如果您需要某个属性的值,则必须显式查询它(使用 get_property 或特定的 getter,如 get_target_property 等)。

在您的特定情况下,INTERFACE_INCLUDE_DIRECTORIES 是我希望您根本不需要查询的属性。 INTERFACE_* 属性的重点是自动传播使用要求;它们的传播是在 CMake 本身中实现的。

关于cmake - 在 cmake 中是否有其他获取目标属性的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054793/

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