Exclude sources from HEADER_MODULE if cmake version is less than 3.19

CMake versions less than 3.19 don't support adding the source files to
the PRIVATE scope of the INTERFACE libraries. It looks like these
PRIVATE sources are only used by IDEs to display them in a project
tree. Skip them to avoid configuring issues.

Fixes: QTBUG-99316
Pick-to: 6.3
Change-Id: Id03f540ac9c94e920adfae5de4f364bd7aba4613
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Alexey Edelev 2021-12-21 17:05:07 +01:00
parent f90221d8cd
commit 8e2f101a6b

View File

@ -51,9 +51,18 @@ function(qt_internal_extend_target target)
endforeach() endforeach()
# Set-up the target # Set-up the target
target_sources("${target}" PRIVATE ${arg_SOURCES} ${dbus_sources})
if (arg_COMPILE_FLAGS) # CMake versions less than 3.19 don't support adding the source files to the PRIVATE scope
set_source_files_properties(${arg_SOURCES} PROPERTIES COMPILE_FLAGS "${arg_COMPILE_FLAGS}") # of the INTERFACE libraries. These PRIVATE sources are only needed by IDEs to display
# them in a project tree, so to avoid build issues and appearing the sources in
# INTERFACE_SOURCES property of HEADER_MODULE let's simply exclude them for compatibility
# with CMake versions less than 3.19.
if(NOT arg_HEADER_MODULE OR CMAKE_VERSION VERSION_GREATER_EQUAL "3.19")
target_sources("${target}" PRIVATE ${arg_SOURCES} ${dbus_sources})
if (arg_COMPILE_FLAGS)
set_source_files_properties(${arg_SOURCES} PROPERTIES
COMPILE_FLAGS "${arg_COMPILE_FLAGS}")
endif()
endif() endif()
set(public_visibility_option "PUBLIC") set(public_visibility_option "PUBLIC")