CMake: Fix CMP0174 warnings

CMake 3.31 introduced the policy CMP0174 that triggers a warning if a
single-value argument is passed to a function without a value.

We did this doing this when forwarding arguments in code that doesn't
use _qt_internal_forward_function_args yet, e.g. in qt_internal_add_app:

    qt_internal_add_executable(...
        TARGET_PRODUCT ${arg_TARGET_PRODUCT}
    ...)

Forward the warning-triggering arguments with
_qt_internal_forward_function_args now, because that only forwards used
arguments.

In the future, we can offload more forwarding work to the
_qt_internal_forward_function_args command and simplify the forwarding
code in qt_internal_add_app and qt_internal_add_tool. This patch only
fixes the worst offenders for now.

Pick-to: 6.8
Change-Id: Ie786691e4b236decf4c62f4dd0751ed76b721177
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Joerg Bornemann 2024-11-08 14:26:32 +01:00
parent 709eb77ff0
commit 18a217af4a
5 changed files with 55 additions and 21 deletions

View File

@ -427,14 +427,21 @@ function(qt_internal_add_3rdparty_header_module target)
)
_qt_internal_validate_all_args_are_parsed(arg)
_qt_internal_forward_function_args(
FORWARD_PREFIX arg
FORWARD_OUT_VAR add_module_args
FORWARD_SINGLE
EXTERNAL_HEADERS
EXTERNAL_HEADERS_DIR
)
qt_internal_add_module(${target}
IS_QT_3RD_PARTY_HEADER_MODULE
INTERNAL_MODULE
HEADER_MODULE
NO_CONFIG_HEADER_FILE
NO_GENERATE_CPP_EXPORTS
EXTERNAL_HEADERS ${arg_EXTERNAL_HEADERS}
EXTERNAL_HEADERS_DIR ${arg_EXTERNAL_HEADERS_DIR}
${add_module_args}
)
set_target_properties(${target} PROPERTIES

View File

@ -59,6 +59,17 @@ function(qt_internal_add_app target)
set(arg_NO_UNITY_BUILD "")
endif()
_qt_internal_forward_function_args(
FORWARD_PREFIX arg
FORWARD_OUT_VAR add_executable_args
FORWARD_SINGLE
TARGET_COMPANY
TARGET_COPYRIGHT
TARGET_DESCRIPTION
TARGET_PRODUCT
TARGET_VERSION
)
qt_internal_add_executable("${target}"
QT_APP
DELAY_RC
@ -85,11 +96,7 @@ function(qt_internal_add_app target)
MOC_OPTIONS ${arg_MOC_OPTIONS}
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
TARGET_VERSION ${arg_TARGET_VERSION}
TARGET_PRODUCT ${arg_TARGET_PRODUCT}
TARGET_DESCRIPTION ${arg_TARGET_DESCRIPTION}
TARGET_COMPANY ${arg_TARGET_COMPANY}
TARGET_COPYRIGHT ${arg_TARGET_COPYRIGHT}
${add_executable_args}
# If you are putting anything after these, make sure that
# qt_set_target_info_properties knows how to process them
)

View File

@ -607,6 +607,13 @@ function(qt_internal_add_module target)
set(arg_EXTERNAL_HEADERS "")
endif()
_qt_internal_forward_function_args(
FORWARD_PREFIX arg
FORWARD_OUT_VAR extend_target_args
FORWARD_SINGLE
PRECOMPILED_HEADER
)
qt_internal_extend_target("${target}"
${arg_NO_UNITY_BUILD}
SOURCES
@ -640,8 +647,8 @@ function(qt_internal_add_module target)
MOC_OPTIONS ${arg_MOC_OPTIONS}
ENABLE_AUTOGEN_TOOLS ${arg_ENABLE_AUTOGEN_TOOLS}
DISABLE_AUTOGEN_TOOLS ${arg_DISABLE_AUTOGEN_TOOLS}
PRECOMPILED_HEADER ${arg_PRECOMPILED_HEADER}
NO_PCH_SOURCES ${arg_NO_PCH_SOURCES}
${extend_target_args}
)
# The public module define is not meant to be used when building the module itself,

View File

@ -77,20 +77,26 @@ function(qt_internal_extend_target target)
endif()
set(dbus_sources "")
foreach(adaptor ${arg_DBUS_ADAPTOR_SOURCES})
qt_create_qdbusxml2cpp_command("${target}" "${adaptor}"
ADAPTOR
BASENAME "${arg_DBUS_ADAPTOR_BASENAME}"
FLAGS ${arg_DBUS_ADAPTOR_FLAGS}
_qt_internal_forward_function_args(
FORWARD_PREFIX arg_DBUS_ADAPTOR
FORWARD_OUT_VAR forwarded_args
FORWARD_SINGLE
BASENAME
FLAGS
)
qt_create_qdbusxml2cpp_command("${target}" "${adaptor}" ADAPTOR ${forwarded_args})
list(APPEND dbus_sources "${adaptor}")
endforeach()
foreach(interface ${arg_DBUS_INTERFACE_SOURCES})
qt_create_qdbusxml2cpp_command("${target}" "${interface}"
INTERFACE
BASENAME "${arg_DBUS_INTERFACE_BASENAME}"
FLAGS ${arg_DBUS_INTERFACE_FLAGS}
_qt_internal_forward_function_args(
FORWARD_PREFIX arg_DBUS_INTERFACE
FORWARD_OUT_VAR forwarded_args
FORWARD_SINGLE
BASENAME
FLAGS
)
qt_create_qdbusxml2cpp_command("${target}" "${interface}" INTERFACE ${forwarded_args})
list(APPEND dbus_sources "${interface}")
endforeach()

View File

@ -117,6 +117,17 @@ function(qt_internal_add_tool target_name)
set(arg_NO_UNITY_BUILD "")
endif()
_qt_internal_forward_function_args(
FORWARD_PREFIX arg
FORWARD_OUT_VAR add_executable_args
FORWARD_SINGLE
TARGET_COMPANY
TARGET_COPYRIGHT
TARGET_DESCRIPTION
TARGET_PRODUCT
TARGET_VERSION
)
qt_internal_add_executable("${target_name}"
OUTPUT_DIRECTORY "${output_dir}"
${exceptions}
@ -139,11 +150,7 @@ function(qt_internal_add_tool target_name)
LINK_OPTIONS ${arg_LINK_OPTIONS}
MOC_OPTIONS ${arg_MOC_OPTIONS}
DISABLE_AUTOGEN_TOOLS ${disable_autogen_tools}
TARGET_VERSION ${arg_TARGET_VERSION}
TARGET_PRODUCT ${arg_TARGET_PRODUCT}
TARGET_DESCRIPTION ${arg_TARGET_DESCRIPTION}
TARGET_COMPANY ${arg_TARGET_COMPANY}
TARGET_COPYRIGHT ${arg_TARGET_COPYRIGHT}
${add_executable_args}
# If you are putting anything after these, make sure that
# qt_set_target_info_properties knows how to process them
)