Env
- OS: Linux
- cmake: 3.21.1
Test Code
cmake_minimum_required(VERSION 3.20)
project(test_cmake_transitive_deps LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
macro(dump_target_includes TARGET_NAME)
message("=====================dump_target_includes begin (${TARGET_NAME})=====================")
get_target_property(PROP_TMP
${TARGET_NAME}
INCLUDE_DIRECTORIES)
message(----INCLUDE_DIRECTORIES----)
foreach(PATH_TMP ${PROP_TMP})
message("* " ${PATH_TMP})
endforeach()
get_target_property(PROP_TMP
${TARGET_NAME}
INTERFACE_INCLUDE_DIRECTORIES)
message(----INTERFACE_INCLUDE_DIRECTORIES----)
foreach(PATH_TMP ${PROP_TMP})
message("* " ${PATH_TMP})
endforeach()
message("=====================dump_target_includes end (${TARGET_NAME})=====================")
endmacro()
add_library(a a/a.cpp)
target_include_directories(a PUBLIC a)
dump_target_includes(a)
add_library(b b/b.cpp)
target_link_libraries(b PUBLIC a)
dump_target_includes(b)
project file structure
CMakeLists.txt
a/a.h
a/a.cpp
b/b.h
b/b.cpp
Problem
for
- target_include_directories(a PUBLIC a)
target_link_libraries(b PUBLIC a)
dump_target_includes
for b
is as below, why no inlucde paths for b
?
=====================dump_target_includes begin (b)=====================
----INCLUDE_DIRECTORIES----
* PROP_TMP-NOTFOUND
----INTERFACE_INCLUDE_DIRECTORIES----
* PROP_TMP-NOTFOUND
=====================dump_target_includes end (b)=====================