Cmake 目标链接库和包含目录属性

Cmake 目标链接库和包含目录属性,cmake,Cmake,在此片段中: cmake_minimum_required(VERSION 3.0) project(hello LANGUAGES C VERSION 0.0.1) add_library(a INTERFACE) target_include_directories(a INTERFACE /usr/local/include) add_executable(b main.c) target_link_libraries(b PUBLIC a) get_target_property(dir

在此片段中:

cmake_minimum_required(VERSION 3.0)
project(hello LANGUAGES C VERSION 0.0.1)
add_library(a INTERFACE)
target_include_directories(a INTERFACE /usr/local/include)
add_executable(b main.c)
target_link_libraries(b PUBLIC a)
get_target_property(dirs b INCLUDE_DIRECTORIES)
message(STATUS "dirs: ${dirs}")
CMake将打印:

-- dirs: dirs-NOTFOUND

我希望所有包含目标的目录,但显然那些通过
target\u link\u库
添加的目录会被忽略。如何获取目标的所有包含目录?

目标链接库不添加任何目录,而是添加您包含的特定库。使用make VERBOSE=1查看完整的命令。您可以通过读取生成目录或库输出名称来获取库输出目录。

target\u link\u库不添加任何目录,而是添加您包含的特定库。使用make VERBOSE=1查看完整的命令。您可以通过读取生成目录或库输出名称来获取库输出目录。

问题是,您要查找的信息只有在生成步骤之后才可用。您只能通过调用(例如,在编译时运行的调用)获取这些信息。您的
get\u target\u属性()
message()
调用在CMake配置步骤中运行

免责声明:对下面链接的问题稍作修改:

add_custom_command(
    b_lists ALL
    ${CMAKE_COMMAND} -E echo "b INCLUDE_DIRECTORIES: $<TARGET_PROPERTY:B,INCLUDE_DIRECTORIES>"
)
add_custom_命令(
b_列出所有
${CMAKE_COMMAND}-E echo“b INCLUDE_目录:$”
)
参考资料


问题在于,您要查找的信息只有在生成步骤之后才可用。您只能通过调用(例如,在编译时运行的调用)获取这些信息。您的
get\u target\u属性()
message()
调用在CMake配置步骤中运行

免责声明:对下面链接的问题稍作修改:

add_custom_command(
    b_lists ALL
    ${CMAKE_COMMAND} -E echo "b INCLUDE_DIRECTORIES: $<TARGET_PROPERTY:B,INCLUDE_DIRECTORIES>"
)
add_custom_命令(
b_列出所有
${CMAKE_COMMAND}-E echo“b INCLUDE_目录:$”
)
参考资料