QtPostProcess: Fix generation of *Depends header files

Normalize Qt module names before trying to match them. Deduplicate the
names while at it.

Change-Id: I5821c34fe5904cf9e9b986ac3ae4af2b248466b7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
This commit is contained in:
Tobias Hunger 2018-10-30 15:25:53 +01:00
parent e9c45bbddd
commit 8cea61e14d

View File

@ -9,7 +9,7 @@ function(qt_internal_write_depends_file target)
endforeach()
string(APPEND contents "#endif\n")
file(GENERATE OUTPUT ${outfile} CONTENT ${contents})
file(GENERATE OUTPUT "${outfile}" CONTENT "${contents}")
endfunction()
function(qt_internal_create_depends_files)
@ -17,11 +17,24 @@ function(qt_internal_create_depends_files)
foreach (target ${KNOWN_QT_MODULES})
get_target_property(depends "${target}" LINK_LIBRARIES)
foreach (dep ${depends})
# Normalize module by stripping leading "Qt::" and trailing "Private"
if (dep MATCHES "Qt::(.*)")
set(dep "${CMAKE_MATCH_1}")
endif()
if (dep MATCHES "(.*)Private")
set(dep "${CMAKE_MATCH_1}")
endif()
list(FIND KNOWN_QT_MODULES "${dep}" _pos)
if (_pos GREATER -1)
list(APPEND qtdeps "${dep}")
endif()
endforeach()
if (DEFINED qtdeps)
list(REMOVE_DUPLICATES qtdeps)
endif()
get_target_property(hasModuleHeaders "${target}" MODULE_HAS_HEADERS)
if (${hasModuleHeaders})
qt_internal_write_depends_file("${target}" ${qtdeps})