Qt – How to specify auto-generated resource files to Qmake

qmakeqtqt4resources

I have a Qt project with a german translation, Translation_de.ts, which is automatically compiled into Translation_de.qm via Qmake:

TRANSLATIONS += Translation_de.ts
...
QMAKE_EXTRA_COMPILERS += lrelease
lrelease.input         = TRANSLATIONS
lrelease.output        = ${QMAKE_FILE_BASE}.qm
lrelease.commands      = $$[QT_INSTALL_BINS]/lrelease ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_BASE}.qm
lrelease.CONFIG       += no_link target_predeps

The generated Translation_de.qm is then compiled into the final application as a resource:

RESOURCES += Resources.qrc

where Resources.qrc looks like this:

<RCC>
  <qresource>
    ...
    <file>Translation_de.qm</file>
  </qresource>
</RCC>

All of this works fine, except that the very first call to Qmake on a fresh checkout throws the following annoying warning:

RCC: Error in 'Resources.qrc': Cannot find file 'Translation_de.qm'

What am I doing wrong here? How do I correctly specify an auto-generated resource file like Translation_de.qm?

Best Answer

http://doc.qt.io/qt-5/qmake-variable-reference.html

CONFIG+=lrelease #generates *.qm files from TRANSLATIONS= to the directory builddir/.qm/ CONFIG+=embed_translations #adds them as qrc resources

so (other than)

CONFIG+=lrelease embed_translations

no qmake magic is required. Your qm files will be under :/i18n/ unless you specify otherwise with

QM_FILES_RESOURCE_PREFIX=/my/customtranslationdirectory
Related Topic