compile-commands: Fix generation of include directories
For an unknown reason, multiple set() calls in a row with the same variable override previous attempts to set things, despite using the same variable. This completely breaks generated output as barely any include directories will be set.
This commit is contained in:
+12
-9
@@ -49,23 +49,26 @@ function(string_append_target_includes)
|
||||
(${target_type} STREQUAL "SHARED_LIBRARY") OR
|
||||
(${target_type} STREQUAL "EXECUTABLE")
|
||||
)
|
||||
# Include Directories
|
||||
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INCLUDE_DIRECTORIES>")
|
||||
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
|
||||
set(_out "${_out}${test} ")
|
||||
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>")
|
||||
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
|
||||
set(_out "${_out}${test} ")
|
||||
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>")
|
||||
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
|
||||
set(_out "${_out}${test} ")
|
||||
set(prop2 "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>")
|
||||
set(test2 "$<$<BOOL:${prop2}>:${_ARGS_PREFIX}$<JOIN:${prop2}, ${_ARGS_PREFIX}>>")
|
||||
set(prop3 "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>")
|
||||
set(test3 "$<$<BOOL:${prop3}>:${_ARGS_PREFIX}$<JOIN:${prop3}, ${_ARGS_PREFIX}>>")
|
||||
set(_out "${_out}${test} ${test2} ${test3}")
|
||||
|
||||
# Try and scan any linked libraries for include directories.
|
||||
if(NOT _ARGS_LINKED)
|
||||
# Scan linked libraries as well.
|
||||
get_target_property(_els ${_target} LINK_LIBRARIES)
|
||||
foreach(_lib ${_els})
|
||||
string_append_target_includes(LINKED TARGET "${_lib}" OUTPUT "_out" PREFIX "${_ARGS_PREFIX}")
|
||||
set(_out2 "")
|
||||
string_append_target_includes(TARGET "${_lib}" PREFIX "${_ARGS_PREFIX}" OUTPUT _out2 LINKED)
|
||||
set(_out "${_out}${_out2}")
|
||||
endforeach()
|
||||
endif()
|
||||
elseif((${target_type} STREQUAL "INTERFACE_LIBRARY"))
|
||||
# Public Include Directories
|
||||
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>")
|
||||
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
|
||||
set(_out "${_out}${test} ")
|
||||
|
||||
Reference in New Issue
Block a user