Компиляция проектов Qt в формате Qt / MsBuild без установленных инструментов Qt VS

У меня есть много проектов 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

Решение

Одним из решений, предоставляемых создателями Инструментов, является копирование %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 не мог найти файлы).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]