Инструменты Qt Visual Studio mo c и qr c не учитывают события предварительной сборки - PullRequest
0 голосов
/ 28 февраля 2020

Я бы хотел использовать скрипт для построения переводов (конвертирования из .ts в .qm, используя lrelease.exe Qt) перед компиляцией файла ресурсов (QR C), где они включены , Таким образом, я знаю, что они всегда обновляются, не говоря уже о том, чтобы не включать двоичные файлы в хранилище.

Я использую Visual Studio и установил Qt Visual Studio Tools. Обычно я делаю это на этапе предварительной сборки в проекте, но он не выполняется, и компиляция файла QR C всегда завершается неудачей.

enter image description here

1>------ Build started: Project: MyApp, Configuration: Release Win32 ------
1>Rcc'ing MyApp.qrc...
1> RCC: Error in 'C:\src\MyApp\MyApp\MyApp.qrc': Cannot find file 'translations/myapp_en.qm'
1>MyApp.qrc : error 1: rcc (c:\Qt\qt_5_12_3\v141\Win32\bin\rcc.exe)
1>Done building project "MyApp.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 12 up-to-date, 1 skipped ==========

Сценарий работает правильно и успешно вызывается, если он помещен как событие после сборки или из командной строки.

@echo off

pushd "%1"
for %%F in (*.ts) do (
    c:\Qt\qt_5_12_3\v141\Win32\bin\lrelease -compress %%F -qm %%~nF.qm
)
popd

exit /b 0

Что я делаю неправильно?

1 Ответ

0 голосов
/ 28 февраля 2020

Случилось так, что я использовал новый режим Qt / MSBuild Qt VS Tools. Внутренне он генерирует несколько скрытых целей в рабочем процессе MSBuild, которые выполняются до событий предварительной сборки.

Решением было использовать вместо этого пользовательский этап сборки , с некоторыми указанными c настройками:

  • Выполнить перед целью QtR cc (той, которая фактически компилирует
  • Инструменты Qt VS анализируют QR C файлов, чтобы проверить, были ли ресурсы изменены, чтобы можно было пропустить их компиляцию. Необходимо добавить файлы перевода .qm в качестве вывода пользовательского шага сборки.
  • Точно так же, чтобы предоставлять переводы всегда скомпилируйте, установите зависимости пользовательского шага сборки для исходных файлов .ts.

enter image description here

...