Support installing multiple configurations within the same prefix

This commit is contained in:
Martchus 2019-04-26 17:37:20 +02:00
parent 76f70abdf8
commit 850101dce6
3 changed files with 11 additions and 9 deletions

View File

@ -171,7 +171,8 @@ else ()
endif () endif ()
# find c++utilities # find c++utilities
find_package(c++utilities 5.0.0 REQUIRED) set(CONFIGURATION_PACKAGE_SUFFIX "" CACHE STRING "sets the suffix for find_package() calls to packages configured via c++utilities")
find_package(c++utilities${CONFIGURATION_PACKAGE_SUFFIX} 5.0.0 REQUIRED)
use_cpp_utilities() use_cpp_utilities()
# include modules to apply configuration # include modules to apply configuration

View File

@ -225,7 +225,7 @@ if (ENABLE_QT_TRANSLATIONS AND TS_FILES)
# add install target for translations # add install target for translations
if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
install(FILES ${QM_FILES} DESTINATION share/${META_PROJECT_NAME}/translations COMPONENT localization) install(FILES ${QM_FILES} DESTINATION "${META_DATA_DIR}/translations" COMPONENT localization)
if (NOT TARGET install-localization) if (NOT TARGET install-localization)
set(LOCALIZATION_TARGET "install-localization") set(LOCALIZATION_TARGET "install-localization")
add_custom_target(${LOCALIZATION_TARGET} add_custom_target(${LOCALIZATION_TARGET}
@ -419,7 +419,7 @@ foreach (RES_FILE ${RES_FILES})
endforeach () endforeach ()
# export Qt resources required by static libraries the static library depends on # export Qt resources required by static libraries the static library depends on
if (META_PROJECT_IS_LIBRARY AND NOT BUILD_SHARED_LIBS AND STATIC_LIBRARIES_QT_RESOURCES) if (STATIC_LIBRARIES_QT_RESOURCES)
list(REMOVE_DUPLICATES STATIC_LIBRARIES_QT_RESOURCES) list(REMOVE_DUPLICATES STATIC_LIBRARIES_QT_RESOURCES)
list(APPEND QT_RESOURCES ${STATIC_LIBRARIES_QT_RESOURCES}) list(APPEND QT_RESOURCES ${STATIC_LIBRARIES_QT_RESOURCES})
endif () endif ()

View File

@ -113,7 +113,7 @@ void loadQtTranslationFile(std::initializer_list<QString> repositoryNames)
void loadQtTranslationFile(initializer_list<QString> repositoryNames, const QString &localeName) void loadQtTranslationFile(initializer_list<QString> repositoryNames, const QString &localeName)
{ {
for (const QString &repoName : repositoryNames) { for (const QString &repoName : repositoryNames) {
QTranslator *qtTranslator = new QTranslator; QTranslator *const qtTranslator = new QTranslator;
const QString fileName(repoName % QChar('_') % localeName); const QString fileName(repoName % QChar('_') % localeName);
if (!additionalTranslationFilePath().isEmpty() && qtTranslator->load(fileName, additionalTranslationFilePath())) { if (!additionalTranslationFilePath().isEmpty() && qtTranslator->load(fileName, additionalTranslationFilePath())) {
QCoreApplication::installTranslator(qtTranslator); QCoreApplication::installTranslator(qtTranslator);
@ -156,8 +156,9 @@ void loadApplicationTranslationFile(const QString &applicationName)
// load English translation files as fallback // load English translation files as fallback
loadApplicationTranslationFile(applicationName, QStringLiteral("en_US")); loadApplicationTranslationFile(applicationName, QStringLiteral("en_US"));
// load translation files for current locale // load translation files for current locale
if (QLocale().name() != QLatin1String("en_US")) { const auto defaultLocale(QLocale().name());
loadApplicationTranslationFile(applicationName, QLocale().name()); if (defaultLocale != QLatin1String("en_US")) {
loadApplicationTranslationFile(applicationName, defaultLocale);
} }
} }
@ -180,7 +181,7 @@ void loadApplicationTranslationFile(const QString &applicationName)
*/ */
void loadApplicationTranslationFile(const QString &applicationName, const QString &localeName) void loadApplicationTranslationFile(const QString &applicationName, const QString &localeName)
{ {
QTranslator *appTranslator = new QTranslator; QTranslator *const appTranslator = new QTranslator;
const QString fileName(applicationName % QChar('_') % localeName); const QString fileName(applicationName % QChar('_') % localeName);
if (!additionalTranslationFilePath().isEmpty() && appTranslator->load(fileName, additionalTranslationFilePath())) { if (!additionalTranslationFilePath().isEmpty() && appTranslator->load(fileName, additionalTranslationFilePath())) {
QCoreApplication::installTranslator(appTranslator); QCoreApplication::installTranslator(appTranslator);
@ -188,9 +189,9 @@ void loadApplicationTranslationFile(const QString &applicationName, const QStrin
QCoreApplication::installTranslator(appTranslator); QCoreApplication::installTranslator(appTranslator);
} else if (appTranslator->load(fileName, QStringLiteral("./translations"))) { } else if (appTranslator->load(fileName, QStringLiteral("./translations"))) {
QCoreApplication::installTranslator(appTranslator); QCoreApplication::installTranslator(appTranslator);
} else if (appTranslator->load(fileName, QStringLiteral(APP_INSTALL_PREFIX "/share/") % applicationName % QStringLiteral("/translations"))) { } else if (appTranslator->load(fileName, QStringLiteral(APP_INSTALL_PREFIX "/" APP_DATA_DIR) % applicationName % QStringLiteral("/translations"))) {
QCoreApplication::installTranslator(appTranslator); QCoreApplication::installTranslator(appTranslator);
} else if (appTranslator->load(fileName, QStringLiteral("../share/") % applicationName % QStringLiteral("/translations"))) { } else if (appTranslator->load(fileName, QStringLiteral("../" APP_DATA_DIR "/") % applicationName % QStringLiteral("/translations"))) {
QCoreApplication::installTranslator(appTranslator); QCoreApplication::installTranslator(appTranslator);
} else if (appTranslator->load(fileName, QStringLiteral(":/translations"))) { } else if (appTranslator->load(fileName, QStringLiteral(":/translations"))) {
QCoreApplication::installTranslator(appTranslator); QCoreApplication::installTranslator(appTranslator);