Qt デスクトップ アプリケーションのビルドの問題に取り組んでいます。QT 5.7を使用しています。
私の知る限り、qt mac アプリケーションの場合、QMAKE_BUNDLE_DATA を使用してすべてのリソースを .app にバンドルする必要があるため、それを使用しました。また、.app バンドルにコピーする必要があるいくつかの .rcc ファイルを生成する外部コマンド (rcc) を実行する make ファイルのカスタム ターゲット を定義しました。
...
CMD_RCC += "rcc -binary "$${QRC_FILE}" -o "$${RCC_FILE}
creatercc.commands = $$CMD_RCC
creatercc-check.commands = $$CMD_RCC
creatercc-make_first.commands = $$CMD_RCC
creatercc-make_default.commands = $$CMD_RCC
creatercc-make_all.commands = $$CMD_RCC
creatercc-qmake_all.commands = $$CMD_RCC
QMAKE_EXTRA_TARGETS *= creatercc creatercc-check creatercc-make_default creatercc-make_first creatercc-make_all creatercc-qmake_all creatercc-clean creatercc-distclean
PRE_TARGETDEPS *= creatercc
macx{
DEPLOYDIR = $$PWD/deploy
LAUNCHER_THEMES.files = \
$$PWD/deploy/themes/res.rcc
LAUNCHER_THEMES.path = Contents/Resources/themes
QMAKE_BUNDLE_DATA += LAUNCHER_THEMES
}
問題は、 .app バンドルが .rcc ファイルを見つけられなかったことを示唆するエラーをコンパイル時に受け取り、.rcc ファイルが生成されなかったことです! ただし、QMAKE_BUNDLE_DATA を使用せずにカスタム ターゲット (creatercc) をテストしたところ、.rcc ファイルが生成されたため、.rcc を作成する前に .app バンドルを作成する必要があると結論付けたため、バンドルは .rcc ファイルを見つけることができませんでした。
問題は、事前定義されたターゲットが QMAKE_BUNDLE_DATA の前に最初に実行され、事前定義されたターゲット コマンドが実行を終了するまで QMAKE_BUNDLE_DATA が待機するようにする方法です。ありがとう