Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to specify auto-generated resource files to Qmake?

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?

like image 717
vog Avatar asked Dec 06 '10 13:12

vog


2 Answers

Create the generated files in qmake phase with e.g. system(lrelease...). Leave the other rules in place too so you don't have to rerun qmake when the input files are changed.

like image 31
laalto Avatar answered Nov 15 '22 19:11

laalto


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
like image 109
Imre Avatar answered Nov 15 '22 21:11

Imre