diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-11-01 12:30:30 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-11-05 16:54:55 +0100 |
commit | c5409964b0c627b25131c73f95794314feb51b5d (patch) | |
tree | 7bd24e7ab245a4d981951cb55d1560bdca5a677b /cmake/QtProcessConfigureArgs.cmake | |
parent | 7451fb36fd1de38868c6c9a48da0b1b66a771672 (diff) | |
download | qtbase-c5409964b0c627b25131c73f95794314feb51b5d.tar.gz |
configure: Allow specifying arbitrary variable assignments
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 <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtProcessConfigureArgs.cmake')
-rw-r--r-- | cmake/QtProcessConfigureArgs.cmake | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cmake/QtProcessConfigureArgs.cmake b/cmake/QtProcessConfigureArgs.cmake index 90371ae419..038905ece7 100644 --- a/cmake/QtProcessConfigureArgs.cmake +++ b/cmake/QtProcessConfigureArgs.cmake @@ -543,6 +543,8 @@ if(options_json_file) return() endif() +set(cmake_var_assignments) + while(1) qtConfHasNextCommandlineArg(has_next) if(NOT has_next) @@ -561,6 +563,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-(.*)") @@ -903,6 +911,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 |