Test workaround of bad interface include directories from depends.
This commit is contained in:
parent
77cecb778f
commit
e7b579bd01
|
@ -82,3 +82,44 @@ add_custom_target(test_custom_target
|
|||
$<TARGET_PROPERTY:TargetIncludeDirectories,COMPILE_DEFINITIONS>
|
||||
WORKING_DIRECTORY
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bad")
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/bad/common.h" "#error Should not be included\n")
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/good")
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/good/common.h" "#include \"othergood.h\"\n")
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/othergood")
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/othergood/othergood.h" "// No error\n")
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/libothergood.cpp" "// No content \n")
|
||||
add_library(libothergood "${CMAKE_CURRENT_BINARY_DIR}/libothergood.cpp")
|
||||
set_property(TARGET libothergood APPEND PROPERTY
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/othergood"
|
||||
)
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/libgood.cpp" "// No content \n")
|
||||
add_library(libgood "${CMAKE_CURRENT_BINARY_DIR}/libgood.cpp")
|
||||
set_property(TARGET libgood APPEND PROPERTY
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/good;$<TARGET_PROPERTY:libothergood,INTERFACE_INCLUDE_DIRECTORIES>"
|
||||
)
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/libbad.cpp" "// No content \n")
|
||||
add_library(libbad "${CMAKE_CURRENT_BINARY_DIR}/libbad.cpp")
|
||||
set_property(TARGET libbad APPEND PROPERTY
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/bad"
|
||||
)
|
||||
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/lib5.cpp" "#include \"common.h\"\n")
|
||||
add_library(lib5 "${CMAKE_CURRENT_BINARY_DIR}/lib5.cpp")
|
||||
|
||||
# Assuming the link order must be:
|
||||
target_link_libraries(lib5 libbad libgood)
|
||||
|
||||
# Oops!.
|
||||
# As include directory order and link order are the same when using target_link_libraries, we have to
|
||||
# get the libgood includes in before the libbad includes.
|
||||
# We do that with this command:
|
||||
target_include_directories(lib5
|
||||
BEFORE PRIVATE $<LINKED:libgood>
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue