From c8850489678471038ea73a748f41d7ad77625aec Mon Sep 17 00:00:00 2001 From: kh1 Date: Thu, 22 Mar 2012 13:01:52 +0100 Subject: Build and compile the resource on the fly. Copy over the qt qm files. Run lupdate on our ts files. Run rcc and generate the qrc_*.cpp file used to compile. Change-Id: Ib726dde084643848d5edab700476b133326c54d7 Reviewed-by: Niels Weber Reviewed-by: Tim Jenssen --- installerfw.pri | 10 +++++++++ src/sdk/sdk.pro | 68 +++++++++++++++++++++++++++++++++++++++++++++++---------- src/src.pro | 2 +- 3 files changed, 67 insertions(+), 13 deletions(-) diff --git a/installerfw.pri b/installerfw.pri index e9d41a641..151fd1bde 100644 --- a/installerfw.pri +++ b/installerfw.pri @@ -3,6 +3,10 @@ } IFW_PRI_INCLUDED = 1 +defineReplace(toNativeSeparators) { + return($$replace(1, /, $$QMAKE_DIR_SEP)) +} + defineReplace(cleanPath) { win32:1 ~= s|\\\\|/|g contains(1, ^/.*):pfx = / @@ -27,6 +31,12 @@ IFW_SOURCE_TREE = $$PWD IFW_APP_PATH = $$IFW_BUILD_TREE/bin IFW_LIB_PATH = $$IFW_BUILD_TREE/lib +RCC = $$cleanPath($$toNativeSeparators($$[QT_INSTALL_BINS]/rcc)) +LRELEASE = $$cleanPath($$toNativeSeparators($$[QT_INSTALL_BINS]/lrelease)) + +win32:RCC = $${RCC}.exe +win32:LRELEASE = $${LRELEASE}.exe + INCLUDEPATH += \ $$IFW_SOURCE_TREE/src/libs/7zip \ $$IFW_SOURCE_TREE/src/libs/kdtools \ diff --git a/src/sdk/sdk.pro b/src/sdk/sdk.pro index 44930f7a0..bdf515949 100644 --- a/src/sdk/sdk.pro +++ b/src/sdk/sdk.pro @@ -11,21 +11,65 @@ QT += network script CONFIG -= app_bundle DESTDIR = $$IFW_APP_PATH -QM_FILES = qt_de.qm de_de.qm en_us.qm -defineTest(testQmFiles) { - for(file, QM_FILES) { - !exists($$PWD/translations/$$file) { - message("File $$PWD/translations/$$file not found!") - return(false) +if (exists($$LRELEASE)) { + QT_LANGUAGES = qt_de + IB_LANGUAGES = de_de en_us + defineReplace(prependAll) { + for(a,$$1):result += $$2$${a}$$3 + return($$result) + } + + defineTest(testFiles) { + for(file, $$1) { + !exists($$file):return(false) } + return(true) } - return(true) -} -if (testQmFiles()) { - RESOURCES += installerbase.qrc -} + SUCCESS = false + IB_TRANSLATIONS = $$prependAll(IB_LANGUAGES, $$PWD/translations/,.ts) + QT_TRANSLATIONS = $$prependAll(QT_LANGUAGES, $$[QT_INSTALL_TRANSLATIONS]/,.ts) + if (!testFiles(QT_TRANSLATIONS)) { + QT_COMPILED_TRANSLATIONS = $$prependAll(QT_LANGUAGES, $$[QT_INSTALL_TRANSLATIONS]/,.qm) + if (testFiles(QT_COMPILED_TRANSLATIONS)) { + SUCCESS = true + copyqm.input = QT_COMPILED_TRANSLATIONS + copyqm.output = $$PWD/translations/${QMAKE_FILE_BASE}.qm + unix:copyqm.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} + win32:copyqm.commands = $$QMAKE_COPY \"${QMAKE_FILE_IN}\" \"${QMAKE_FILE_OUT}\" + copyqm.name = COPY ${QMAKE_FILE_IN} + copyqm.CONFIG += no_link target_predeps + QMAKE_EXTRA_COMPILERS += copyqm + } + } else { + SUCCESS = true + IB_TRANSLATIONS += $$QT_TRANSLATIONS + } + + if (!isEmpty(SUCCESS)) { + updateqm.input = IB_TRANSLATIONS + updateqm.output = $$PWD/translations/${QMAKE_FILE_BASE}.qm + updateqm.commands = $$LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} + updateqm.name = LRELEASE ${QMAKE_FILE_IN} + updateqm.CONFIG += no_link target_predeps + QMAKE_EXTRA_COMPILERS += updateqm + + if (exists($$RCC)) { + RESOURCE_IB_TRANSLATIONS = $$prependAll(IB_LANGUAGES, $$PWD/translations/,.qm) + RESOURCE_QT_TRANSLATIONS = $$prependAll(QT_LANGUAGES, $$PWD/translations/,.qm) + RESOURCE = $$PWD/installerbase.qrc + runrcc.input = RESOURCE + runrcc.output = $$PWD/qrc_installerbase.cpp + runrcc.commands = $$RCC -name ${QMAKE_FILE_BASE} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + runrcc.name = RCC ${QMAKE_FILE_IN} + runrcc.CONFIG += no_link explicit_dependencies + runrcc.depends = $$RESOURCE_IB_TRANSLATIONS $$RESOURCE_QT_TRANSLATIONS + runrcc.variable_out = SOURCES + QMAKE_EXTRA_COMPILERS += runrcc + } + } +} FORMS += settingsdialog.ui HEADERS += installerbase_p.h \ @@ -41,7 +85,7 @@ SOURCES = installerbase.cpp \ win32:RC_FILE = installerbase.rc win32-msvc2005 { - CONFIG += embed_manifest_exe #msvc2008 is doing this automaticaly + CONFIG += embed_manifest_exe #msvc2008 is doing this automatically } embed_manifest_exe:win32-msvc2005 { diff --git a/src/src.pro b/src/src.pro index 02e8eaf85..92ee0cf9b 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,4 +1,4 @@ CONFIG += ordered TEMPLATE = subdirs SUBDIRS += libs sdk -TRANSLATIONS += sdk/translations/de_de.ts sdk/translations/en_us.ts \ No newline at end of file +TRANSLATIONS += sdk/translations/de_de.ts sdk/translations/en_us.ts -- cgit v1.2.3