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:
Michael Fabian 'Xaymar' Dirks
2020-04-18 18:46:04 +02:00
parent 4a7ca383b4
commit 58da85a255
+12 -9
View File
@@ -49,23 +49,26 @@ function(string_append_target_includes)
(${target_type} STREQUAL "SHARED_LIBRARY") OR (${target_type} STREQUAL "SHARED_LIBRARY") OR
(${target_type} STREQUAL "EXECUTABLE") (${target_type} STREQUAL "EXECUTABLE")
) )
# Include Directories
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INCLUDE_DIRECTORIES>") set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INCLUDE_DIRECTORIES>")
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>") set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
set(_out "${_out}${test} ") set(prop2 "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>")
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>") set(test2 "$<$<BOOL:${prop2}>:${_ARGS_PREFIX}$<JOIN:${prop2}, ${_ARGS_PREFIX}>>")
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>") set(prop3 "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>")
set(_out "${_out}${test} ") set(test3 "$<$<BOOL:${prop3}>:${_ARGS_PREFIX}$<JOIN:${prop3}, ${_ARGS_PREFIX}>>")
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_SYSTEM_INCLUDE_DIRECTORIES>") set(_out "${_out}${test} ${test2} ${test3}")
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
set(_out "${_out}${test} ") # Try and scan any linked libraries for include directories.
if(NOT _ARGS_LINKED) if(NOT _ARGS_LINKED)
# Scan linked libraries as well.
get_target_property(_els ${_target} LINK_LIBRARIES) get_target_property(_els ${_target} LINK_LIBRARIES)
foreach(_lib ${_els}) 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() endforeach()
endif() endif()
elseif((${target_type} STREQUAL "INTERFACE_LIBRARY")) elseif((${target_type} STREQUAL "INTERFACE_LIBRARY"))
# Public Include Directories
set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>") set(prop "$<TARGET_PROPERTY:${_ARGS_TARGET},INTERFACE_INCLUDE_DIRECTORIES>")
set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>") set(test "$<$<BOOL:${prop}>:${_ARGS_PREFIX}$<JOIN:${prop}, ${_ARGS_PREFIX}>>")
set(_out "${_out}${test} ") set(_out "${_out}${test} ")