summaryrefslogtreecommitdiffstats
path: root/cmake/QtSetup.cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2022-02-22 18:51:16 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2022-02-24 19:46:01 +0100
commit32b596b7b10eac63293cf3bd3e04a15bd826fbf1 (patch)
tree4105d6a9a5beb240a6e46e031137d2c4bd54fc79 /cmake/QtSetup.cmake
parent7a58ca2d3a6720e0dd7a0ec0efed6105082a0f8a (diff)
configure: CMake: Add -no-prefix option
Introduce a new -no-prefix option that can be used to build Qt without having to install it. Currently, -no-prefix is already implied by -developer-build, but -developer-build also implies -warnings-are-errors and -feature-private-tests, which not everyone might want to use. Some Qt builders likely use -developer-build for the no-prefix behavior, hence we introduce a standalone -no-prefix option to offer a nicer user experience without -Werror and friends. Previously it was possible to achieve the same by specifying -prefix $PWD, but that relies on $PWD expanding property in the used shell. The new -no-prefix doesn't depend on the type of the shell and is shorter to type. Internally this gets passed by configure as -DINPUT_no_prefix=yes to CMake, and transformed into a -DQT_FEATURE_no_prefix=ON feature. The feature also gets automatically auto-detected to ON if developer-build is set, -prefix is either unset or $PWD. CMake code should still query QT_WILL_INSTALL to decide whether files need to be installed or not. As a drive-by, we now also export QT_FEATURE_developer_build to be available for querying during configuration of other repos (previously it was only possible to query FEATURE_developer_build). Pick-to: 6.2 6.3 Change-Id: Iaa6c8d8ae2b736282e9949d2a5d7f412e290a253 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'cmake/QtSetup.cmake')
-rw-r--r--cmake/QtSetup.cmake13
1 files changed, 12 insertions, 1 deletions
diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake
index 87d3ad9cf8..58f723e4de 100644
--- a/cmake/QtSetup.cmake
+++ b/cmake/QtSetup.cmake
@@ -11,6 +11,13 @@ if(NOT FEATURE_developer_build AND INPUT_developer_build
set(FEATURE_developer_build ON)
endif()
+# Pre-calculate the no_prefix feature if it's set by configure via INPUT_no_prefix.
+# This needs to be done before qtbase/configure.cmake is processed.
+if(NOT FEATURE_no_prefix AND INPUT_no_prefix
+ AND NOT "${INPUT_no_prefix}" STREQUAL "undefined")
+ set(FEATURE_no_prefix ON)
+endif()
+
set(_default_build_type "Release")
if(FEATURE_developer_build)
set(_default_build_type "Debug")
@@ -95,7 +102,11 @@ set(CMAKE_LINK_DEPENDS_NO_SHARED ON)
# QtBuildInternalsExtra.cmake file.
if (PROJECT_NAME STREQUAL "QtBase" AND NOT QT_BUILD_STANDALONE_TESTS)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- if(FEATURE_developer_build)
+ # Handle both FEATURE_ and QT_FEATURE_ cases when they are specified on the command line
+ # explicitly. It's possible for one to be set, but not the other, because
+ # qtbase/configure.cmake is not processed by this point.
+ if(FEATURE_developer_build OR QT_FEATURE_developer_build
+ OR FEATURE_no_prefix OR QT_FEATURE_no_prefix)
# Handle non-prefix builds by setting the CMake install prefix to point to qtbase's
# build dir. While building another repo (like qtsvg) the CMAKE_PREFIX_PATH should be
# set on the command line to point to the qtbase build dir.