qt5base-lts/cmake/configure-cmake-mapping.md
Alexandru Croitor 32b596b7b1 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>
2022-02-24 19:46:01 +01:00

26 KiB

The following table describes the mapping of configure options to CMake arguments.

configure cmake Notes
-prefix /opt/qt6 -DCMAKE_INSTALL_PREFIX=/opt/qta6
-no-prefix (only available in Qt6) -DCMAKE_INSTALL_PREFIX=$PWD (with bash) In Qt5 this was done by specifying -prefix $PWD
or -DFEATURE_no_prefix=ON
-extprefix /opt/qt6 -DCMAKE_STAGING_PREFIX=/opt/qt6
-bindir -DINSTALL_BINDIR= similar for -headerdir -libdir and so on
-hostdatadir -DINSTALL_MKSPECSDIR=
-help n/a Handled by configure[.bat].
-verbose
-continue
-redo n/a Handled by configure[.bat].
-recheck [test,...]
-feature-foo -DFEATURE_foo=ON
-no-feature-foo -DFEATURE_foo=OFF
-list-features At the moment: configure with cmake once,
then use ccmake or cmake-gui to inspect the features.
-list-libraries
-opensource n/a
-commercial n/a
-confirm-license n/a
-release -DCMAKE_BUILD_TYPE=Release
-debug -DCMAKE_BUILD_TYPE=Debug
-debug-and-release -G "Ninja Multi-Config"
-DCMAKE_CONFIGURATION_TYPES=Release;Debug
-optimize-debug -DFEATURE_optimize_debug=ON
-optimize-size -DFEATURE_optimize_size=ON
-optimized-tools n/a This affects only host tools.
-force-debug-info Use the RelWithDebInfo build config.
-separate-debug-info -DFEATURE_separate_debug_info=ON
-gdb-index -DFEATURE_enable_gdb_index=ON
-strip cmake --install . --strip This affects the install targets generated by qmake.
-gc-binaries -DFEATURE_gc_binaries=ON
-force-asserts -DFEATURE_force_asserts=ON
-developer-build -DFEATURE_developer_build=ON
-shared -DBUILD_SHARED_LIBS=ON
-static -DBUILD_SHARED_LIBS=OFF
-framework -DFEATURE_framework=ON
-platform -DQT_QMAKE_TARGET_MKSPEC=
-xplatform -DQT_QMAKE_TARGET_MKSPEC= Used for generating qmake-compatibility files.
If passed 'macx-ios-clang', will configure an iOS build.
-device equivalent to -xplatform devices/
-device-option <key=value> -DQT_QMAKE_DEVICE_OPTIONS=key1=value1;key2=value2 Only used for generation qmake-compatibility files.
The device options are written into mkspecs/qdevice.pri.
-appstore-compliant -DFEATURE_appstore_compliant=ON
-qtnamespace -DQT_NAMESPACE=
-qtlibinfix -DQT_LIBINFIX=
-testcocoon
-gcov
-trace [backend] -DINPUT_trace=yes or -DINPUT_trace=
or -DFEATURE_
-sanitize address -sanitize undefined -DFEATURE_sanitize_address=ON Directly setting -DECM_ENABLE_SANITIZERS=foo is not supported
-DFEATURE_sanitize_undefined=ON
-c++std c++20 -DFEATURE_cxx20=ON
-sse2/-sse3/-ssse3/-sse4.1 -DFEATURE_sse4=ON
-mips_dsp/-mips_dspr2 -DFEATURE_mips_dsp=ON
-qreal -DQT_COORD_TYPE=
-R -DQT_EXTRA_RPATHS=path1;path2
-rpath negative CMAKE_SKIP_BUILD_RPATH
negative CMAKE_SKIP_INSTALL_RPATH
-reduce-exports -DFEATURE_reduce_exports=ON
-reduce-relocations -DFEATURE_reduce_relocations=ON
-plugin-manifests
-static-runtime -DFEATURE_static_runtime=ON
-pch -DBUILD_WITH_PCH=ON
-ltcg -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON or
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION_=ON
-linker [bfd,gold,lld] -DINPUT_linker= or
-DFEATURE_use__linker=ON
-incredibuild-xge n/a This option enables remote distribution of Visual Studio
custom build steps for moc, uic, and rcc.
This lacks support in CMake.
-ccache -DQT_USE_CCACHE=ON
-make-tool n/a
-mp n/a
-warnings-are-errors -DWARNINGS_ARE_ERRORS=ON
-silent n/a
-sysroot -DCMAKE_SYSROOT= Should be provided by a toolchain file that's
passed via -DCMAKE_TOOLCHAIN_FILE=
-no-gcc-sysroot n/a The corresponding CMake variables are CMAKE_SYSROOT_LINK
and CMAKE_SYSROOT_COMPILE.
They are usually set in a toolchain file.
-no-pkg-config -DFEATURE_pkg_config=OFF
-D -DQT_EXTRA_DEFINES=;
-I -DQT_EXTRA_INCLUDEPATHS=;
-L -DQT_EXTRA_LIBDIRS=;
-F -DQT_EXTRA_FRAMEWORKPATHS=;
-sdk -DQT_UIKIT_SDK= Should be provided a value like 'iphoneos' or 'iphonesimulator'
If no value is provided, a simulator_and_device build is
assumed.
-android-sdk -DANDROID_SDK_ROOT=
-android-ndk -DCMAKE_TOOLCHAIN_FILE=
-android-ndk-platform android-23 -DANDROID_NATIVE_API_LEVEL=23
-android-abis <abi_1>,...,<abi_n> -DANDROID_ABI=<abi_1> only one ABI can be specified
-android-style-assets -DFEATURE_android_style_assets=ON
-android-javac-source -DQT_ANDROID_JAVAC_SOURCE=7 Set the javac build source version.
-android-javac-target -DQT_ANDROID_JAVAC_TARGET=7 Set the javac build target version.
-skip ,...,<repo_n> -DBUILD_=OFF
-submodules ,...,<repo_n> -QT_BUILD_SUBMODULES=;...;
-make -DQT_BUILD_TESTS=ON A way to turn on tools explicitly is missing. If tests/examples
-DQT_BUILD_EXAMPLES=ON are enabled, you can disable their building as part of the
'all' target by also passing -DQT_BUILD_TESTS_BY_DEFAULT=OFF or
-DQT_BUILD_EXAMPLES_BY_DEFAULT=OFF. Note that if you entirely
disable tests/examples at configure time (by using
-DQT_BUILD_TESTS=OFF or -DQT_BUILD_EXAMPLES=OFF) you can't then
build them separately, after configuration.
-nomake -DQT_BUILD_TESTS=OFF A way to turn off tools explicitly is missing.
-DQT_BUILD_EXAMPLES=OFF
-no-gui -DFEATURE_gui=OFF
-no-widgets -DFEATURE_widgets=OFF
-no-dbus -DFEATURE_dbus=OFF
-dbus [linked/runtime] -DINPUT_dbus=[linked/runtime]
-dbus-linked -DINPUT_dbus=linked
-dbus-runtime -DINPUT_dbus=runtime
-accessibility -DFEATURE_accessibility=ON
-doubleconversion -DFEATURE_doubleconversion=ON
-DFEATURE_system_doubleconversion=ON/OFF
-glib -DFEATURE_glib=ON
-eventfd -DFEATURE_eventfd=ON
-inotify -DFEATURE_inotify=ON
-icu -DFEATURE_icu=ON
-pcre -DFEATURE_pcre2=ON
-pcre [system/qt] -DFEATURE_system_pcre2=ON/OFF
-pps n/a QNX feature. Not available for 6.0.
-zlib [system/qt] -DFEATURE_system_zlib=ON/OFF
-ssl -DFEATURE_ssl=ON
-openssl [no/yes/linked/runtime] -DINPUT_openssl=no/yes/linked/runtime
-openssl-linked -DINPUT_openssl=linked
-openssl-runtime -DINPUT_openssl=runtime
-schannel -DFEATURE_schannel=ON
-securetransport -DFEATURE_securetransport=ON
-sctp -DFEATURE_sctp=ON
-libproxy -DFEATURE_libproxy=ON
-system-proxies -DFEATURE_system_proxies=ON
-cups -DFEATURE_cups=ON
-fontconfig -DFEATURE_fontconfig=ON
-freetype [no/qt/system] -DFEATURE_freetype=ON/OFF
-DFEATURE_system_freetype=ON/OFF
-harfbuzz [no/qt/system] -DFEATURE_harfbuzz=ON
-DFEATURE_system_harfbuzz=ON/OFF
-gtk -DFEATURE_gtk3=ON
-lgmon n/a QNX-specific
-no-opengl -DINPUT_opengl=no
-opengl -DINPUT_opengl=
-opengles3 -DFEATURE_opengles3=ON
-egl -DFEATURE_egl=ON
-qpa -DQT_QPA_DEFAULT_PLATFORM=
-xcb-xlib -DFEATURE_xcb_xlib=ON
-direct2d -DFEATURE_direct2d=ON
-directfb -DFEATURE_directfb=ON
-eglfs -DFEATURE_eglfs=ON
-gbm -DFEATURE_gbm=ON
-kms -DFEATURE_kms=ON
-linuxfb -DFEATURE_linuxfb=ON
-xcb -DFEATURE_xcb=ON
-libudev -DFEATURE_libudev=ON
-evdev -DFEATURE_evdev=ON
-imf n/a QNX-specific
-libinput -DFEATURE_libinput=ON
-mtdev -DFEATURE_mtdev=ON
-tslib -DFEATURE_tslib=ON
-bundled-xcb-xinput -DFEATURE_system_xcb_xinput=OFF
-xkbcommon -DFEATURE_xkbcommon=ON
-gif -DFEATURE_gif=ON
-ico -DFEATURE_ico=ON
-libpng -DFEATURE_libpng=ON
-libjpeg -DFEATURE_libjpeg=ON
-sql- -DFEATURE_sql_=ON
-sqlite [qt/system] -DFEATURE_system_sqlite=OFF/ON