CMake: Fix unity build for qtgraphs
qtgraphs defines a target in one directory, and then calls qt_internal_extend_target with NO_UNITY_BUILD_SOURCES in another subdirectory scope. That in turn calls set_source_files_properties but only for the latter subdirectory, and not the main target directory. Because CMake has per-directory-scope source file properties, the 'no unity sources' option was effectively ignored. When using CMake 3.18, make sure to specify the TARGET_DIRECTORY option so that the source file properties are added to the scope of the defining target. Pick-to: 6.5 6.6 6.7 Change-Id: I4190d4073a2955aa7053b5faaaa57f683bc768a2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>bb10
parent
30bacf78f4
commit
081e50d768
|
|
@ -11,7 +11,14 @@ function(_qt_internal_validate_no_unity_build prefix)
|
|||
endfunction()
|
||||
|
||||
function(qt_update_ignore_unity_build_sources target sources)
|
||||
if (sources)
|
||||
set_source_files_properties(${sources} PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
|
||||
if(sources)
|
||||
# We need to add the TARGET_DIRECTORY scope for targets that have qt_internal_extend_target
|
||||
# calls in different subdirectories, like in qtgraphs.
|
||||
set(scope_args)
|
||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.18")
|
||||
set(scope_args TARGET_DIRECTORY ${target})
|
||||
endif()
|
||||
set_source_files_properties(${sources} ${scope_args}
|
||||
PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON)
|
||||
endif()
|
||||
endfunction()
|
||||
|
|
|
|||
Loading…
Reference in New Issue