01d2f35b69
CONFIG+=lrelease enables that all .ts files in TRANSLATIONS or EXTRA_TRANSLATIONS are compiled by lrelease. EXTRA_TRANSLATIONS is a new variable that is only processed by lrelease, but not lupdate - this is useful for translation files that are supposed to be empty, because they match the language of the original translation sources. If embed_translations is also set, the generated .qm files will be made available through the Qt resource system under :/i18n/. Alternatively, the user can specify an installation target by setting QM_FILES_INSTALL_PATH. Note that relative paths in TRANSLATIONS are not taken into account. That is, TRANSLATIONS = component1/de.ts component2/de.ts will cause a conflict. [ChangeLog][qmake] New CONFIG options lrelease and embed_translations were added. CONFIG+=lrelease does run lrelease on translation files listed in TRANSLATIONS and EXTRA_TRANSLATIONS. CONFIG+=embed_translations does include the generated .qm files as resources under :/i18n/. Change-Id: I94db5b8431d07b24f59b2c332ede91450f9c0c58 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
146 lines
4.5 KiB
Plaintext
146 lines
4.5 KiB
Plaintext
#
|
|
# W A R N I N G
|
|
# -------------
|
|
#
|
|
# This file is not part of the Qt API. It exists purely as an
|
|
# implementation detail. It may change from version to version
|
|
# without notice, or even be removed.
|
|
#
|
|
# We mean it.
|
|
#
|
|
|
|
!contains(QMAKE_INTERNAL_INCLUDED_FILES, .*qmodule\\.pri) {
|
|
QMAKE_QT_MODULE = $$[QT_HOST_DATA/get]/mkspecs/qmodule.pri
|
|
!exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) {
|
|
debug(1, "Cannot load qmodule.pri!")
|
|
} else {
|
|
debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)")
|
|
}
|
|
} else {
|
|
debug(1, "Not loading qmodule.pri twice")
|
|
}
|
|
|
|
PRECOMPILED_DIR = .pch
|
|
OBJECTS_DIR = .obj
|
|
MOC_DIR = .moc
|
|
RCC_DIR = .rcc
|
|
UI_DIR = .uic
|
|
TRACEGEN_DIR = .tracegen
|
|
QMLCACHE_DIR = .qmlcache
|
|
LRELEASE_DIR = .qm
|
|
intel_icl {
|
|
# ICL 14.0 has a bug that makes it not find #includes in dirs starting with .
|
|
MOC_DIR = tmp/moc
|
|
RCC_DIR = tmp/rcc
|
|
UI_DIR = tmp/uic
|
|
}
|
|
|
|
QMAKE_DIR_REPLACE_SANE = PRECOMPILED_DIR OBJECTS_DIR MOC_DIR RCC_DIR UI_DIR
|
|
|
|
# force_independent can be set externally. prefix_build not.
|
|
!exists($$[QT_HOST_DATA]/.qmake.cache): \
|
|
CONFIG += prefix_build force_independent
|
|
|
|
!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent {
|
|
# When doing a -prefix build of top-level qt5/qt.pro, we need to announce
|
|
# this repo's output dir to the other repos.
|
|
MODULE_BASE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_))
|
|
!contains(QTREPOS, $$MODULE_BASE_OUTDIR): \
|
|
cache(QTREPOS, add super, MODULE_BASE_OUTDIR)
|
|
# This repo's module pris' location needs to be made known to qmake.
|
|
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
|
|
modpath = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
|
|
!contains(QMAKEMODULES, $$modpath): \
|
|
cache(QMAKEMODULES, add super, modpath)
|
|
unset(modpath)
|
|
}
|
|
|
|
defineTest(qtSetQmlPath) {
|
|
!qtConfig(static)|host_build|no_import_scan: \
|
|
return()
|
|
deps = $$replace(QT, -private$, _private)
|
|
deps = $$resolve_depends(deps, "QT.")
|
|
!contains(deps, qml): \
|
|
return()
|
|
|
|
isEmpty(QTREPOS): \
|
|
QTREPOS = $$shadowed($$dirname(_QMAKE_CONF_))
|
|
for (qrep, QTREPOS): \
|
|
exists($$qrep/qml): \
|
|
QMLPATHS += $$qrep/qml
|
|
export(QMLPATHS)
|
|
}
|
|
|
|
# Apply extra compiler flags passed via configure last.
|
|
CONFIG = qt_build_extra $$CONFIG
|
|
|
|
# Don't actually try to install anything in non-prefix builds.
|
|
# This is much easier and safer than making every single INSTALLS
|
|
# assignment conditional.
|
|
!prefix_build: \
|
|
CONFIG += qt_clear_installs
|
|
|
|
cross_compile: \
|
|
CONFIG += force_bootstrap
|
|
|
|
android|uikit|winrt: \
|
|
CONFIG += builtin_testdata
|
|
|
|
CONFIG += \
|
|
utf8_source \
|
|
create_prl link_prl \
|
|
prepare_docs qt_docs_targets \
|
|
no_private_qt_headers_warning QTDIR_build \
|
|
qt_example_installs \
|
|
# Qt modules get compiled without exceptions enabled by default.
|
|
# However, testcases should be still built with exceptions.
|
|
exceptions_off testcase_exceptions
|
|
|
|
# Under Windows, this is neither necessary (transitive deps are automatically
|
|
# resolved), nor functional (.res files end up in .prl files and break things).
|
|
unix: CONFIG += explicitlib
|
|
|
|
# By default we want tests on macOS to be built as standalone executables
|
|
macos: CONFIG += testcase_no_bundle
|
|
|
|
# Override MinGW's definition in _mingw.h
|
|
mingw: DEFINES += WINVER=0x0601 _WIN32_WINNT=0x0601
|
|
|
|
defineTest(qtBuildPart) {
|
|
bp = $$eval($$upper($$section(_QMAKE_CONF_, /, -2, -2))_BUILD_PARTS)
|
|
isEmpty(bp): bp = $$QT_BUILD_PARTS
|
|
contains(bp, $$1): return(true)
|
|
return(false)
|
|
}
|
|
|
|
defineTest(qtNomakeTools) {
|
|
qtBuildPart(tools): return()
|
|
for (d, 1) {
|
|
$${d}.CONFIG += no_default_target no_default_install
|
|
export($${d}.CONFIG)
|
|
}
|
|
}
|
|
|
|
# This overloads the same function from qt_functions.prf.
|
|
# This is not in qt_module.prf, as that gets loaded too late.
|
|
defineTest(qtConfig) {
|
|
modules = $$QT $$QT_PRIVATE $$QT_FOR_PRIVATE $$QT_FOR_CONFIG
|
|
modules ~= s,-private$,_private,g
|
|
modules = $$resolve_depends(modules, "QT.", ".depends")
|
|
isEmpty(MODULE): \
|
|
MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0)
|
|
exists($$OUT_PWD/qt$${MODULE}-config.pri) {
|
|
include($$OUT_PWD/qt$${MODULE}-config.pri)
|
|
modules += $${MODULE} $${MODULE}_private
|
|
}
|
|
modules += global global_private
|
|
modules = $$reverse(modules)
|
|
for (module, modules) {
|
|
contains(QT.$${module}.enabled_features, $$1): \
|
|
return(true)
|
|
contains(QT.$${module}.disabled_features, $$1): \
|
|
return(false)
|
|
}
|
|
error("Could not find feature $${1}.")
|
|
}
|