Компиляция проектов Qt в формате Qt / MsBuild без установленных инструментов Qt VS - PullRequest
0 голосов
/ 28 июня 2018

У меня много проектов Qt в Visual Studio, использующих новый формат Qt / MsBuild , предоставляемый Qt VS Tools. При компиляции в моей среде разработки, где у меня установлены Qt VS Tools, все работает без сбоев (компиляция из IDE и из командной строки).

У нас есть компьютер, предназначенный для ночных сборок, на котором доступны только компилятор и msbuild (никакие IDE или Qt VS Tools не установлены).

При компиляции проектов на таком компьютере мы получаем ошибку:

QtMsBuild: не удалось найти qt.targets, qt.props; проект может быть построен неправильно.

После нескольких строк, таких как

e: ******** \ Preferences.h (4): фатальная ошибка C1083: не удается открыть включаемый файл: 'ui_Preferences.h': такого файла или каталога нет

(проект содержит Preferences.ui).

Как я могу решить такие ошибки, когда Qt VS Tools не установлены?

1 Ответ

0 голосов
/ 28 июня 2018

Одним из решений, предоставляемых создателями Инструментов, является копирование %LOCALAPPDATA%\QtMsBuild в каждый каталог проекта. Но мы говорим о сотнях проектов. Делать вручную, и даже больше, выдвигать их как часть самого проекта не очень элегантно.

Одним из вариантов будет добавление шага перед сборкой, который копирует его из общего места в каждый проект (и добавление строки **/QtMsBuild в каждый файл .gitignore). Опять же, похоже, слишком много работы.

При просмотре файла .vcxproj для проекта Qt вы обнаружите этот фрагмент (причина решения, предоставленного создателями):

<PropertyGroup Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">
  <QtMsBuild>$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
</PropertyGroup>

Итак, самое простое решение (без возможности установки инструментов) - скопировать каталог %LOCALAPPDATA\QtMsBuild (из системы с установленными Инструментами) на ночной компьютер (в любом обычном месте, но я решил сохранить местоположение, используемое инструментами), а затем установите переменную среды:

set QtMsBuild=%LOCALAPPDATA%\QtMsBuild

PS: не добавляйте двойные кавычки в переменную (по крайней мере, у меня были проблемы с ними, поэтому VS не смог найти файлы).

...