summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-11-01 12:30:30 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2021-11-05 16:54:55 +0100
commitc5409964b0c627b25131c73f95794314feb51b5d (patch)
tree7bd24e7ab245a4d981951cb55d1560bdca5a677b /cmake
parent7451fb36fd1de38868c6c9a48da0b1b66a771672 (diff)
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')
-rw-r--r--cmake/QtProcessConfigureArgs.cmake13
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