From 360f181857778a46e1b4bc48bc5176337f92c059 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 1 Nov 2021 12:30:30 +0100 Subject: [PATCH] configure: Allow specifying arbitrary variable assignments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's now possible to call configure with arbitrary variable assignments "FOO=BAR" that get passed as "-DFOO=BAR" to CMake. There is no error anymore for unknown variables. CMake already warns about those: "Manually-specified variables were not used by the project: FOO". [ChangeLog][configure] Users can directly assign CMake variables with configure, for example "configure CMAKE_CXX_COMPILE=clang++-11". Fixes: QTBUG-88210 Change-Id: Ib15e63a895df717919dd2b6623fa4d284209776f Reviewed-by: Alexandru Croitor (cherry picked from commit c5409964b0c627b25131c73f95794314feb51b5d) Reviewed-by: Jörg Bornemann --- cmake/QtProcessConfigureArgs.cmake | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake index 45cfdd3961e..d7df9e142f6 100644 --- a/cmake/QtProcessConfigureArgs.cmake +++ b/cmake/QtProcessConfigureArgs.cmake @@ -569,6 +569,8 @@ if(options_json_file) return() endif() +set(cmake_var_assignments) + while(1) qtConfHasNextCommandlineArg(has_next) if(NOT has_next) @@ -587,6 +589,12 @@ while(1) continue() endif() + # Handle variable assignments + if(arg MATCHES "^([a-zA-Z0-9_-]+)=(.*)") + list(APPEND cmake_var_assignments "${arg}") + continue() + endif() + # parse out opt and val set(nextok FALSE) if(arg MATCHES "^--?enable-(.*)") @@ -932,6 +940,11 @@ if(generator) push(-G "${generator}") endif() +# Add CMake variable assignments near the end to allow users to overwrite what configure sets. +foreach(arg IN LISTS cmake_var_assignments) + push("-D${arg}") +endforeach() + push("${MODULE_ROOT}") # Restore the escaped semicolons in arguments that are lists