在未安装Qt VS工具的情况下以Qt / MsBuild格式编译Qt项目

时间:2018-06-28 11:46:54

标签: c++ visual-studio qt msbuild qt-vs-addin

我使用Qt VS工具提供的new Qt/MsBuild format在Visual Studio中有许多Qt项目。在安装了Qt VS工具的开发环境中进行编译时,一切都可以正常工作(通过IDE和命令行进行编译)。

我们有一台专用于夜间构建的计算机,其中仅编译器和msbuild可用(未安装IDE或Qt VS工具)。

在这样的计算机上编译项目时,会出现错误:

  

QtMsBuild:无法找到qt.targets,qt.props;项目可能无法正确构建。

接下来是几行,例如

  

e:******** \ Preferences.h(4):致命错误C1083:无法打开包含文件:'ui_Preferences.h':没有此类文件或目录

(项目包含Preferences.ui)。

未安装Qt VS Tools时如何解决此类错误?

3 个答案:

答案 0 :(得分:1)

工具创建者提供的一种解决方案是将%LOCALAPPDATA%\QtMsBuild复制到每个项目目录中。但是我们正在谈论数百个项目。手动进行操作,以及将其作为项目本身的一部分进行推送,听起来并不优雅。

一种选择是添加一个预构建步骤,将该步骤从一个公共位置复制到每个项目中(并在每个.gitignore文件中添加一个**/QtMsBuild行)。同样,看起来工作太多。

查看Qt项目的.vcxproj文件时,您会发现以下片段(创建者提供解决方案的原因):

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

因此,最简单的解决方案(无法安装工具)是将%LOCALAPPDATA\QtMsBuild复制到夜间计算机(在任何常见的位置,但我决定保留工具使用的位置),然后设置环境变量:

set QtMsBuild=%LOCALAPPDATA%\QtMsBuild

PS:不要在变量中添加双引号(至少我对它们有问题,因此VS无法找到文件)。

答案 1 :(得分:1)

我在设置$Env:QtToolsPath="$Env:QT_PATH\bin"的情况下遇到了问题,从而解决了该问题。 (它没有为某些检查找到qmake)。我认为,这是使用QtMsBuild v3.3时必需的

不确定此信息是否100%正确,但可能会对某人有所帮助。

要我使用QtMsBuild将Qs与MsBuild一起使用(不安装Visual Studio和/或VS插件),我需要进行以下设置:

示例(PowerShell):

- $Env:PATH="$Env:MSBUILD_PATH;$Env:PATH"
- $Env:QT_PATH="D:\BuildTools\Qt\5.15.1\msvc2019_64"
- $Env:QtMsBuild="D:\BuildTools\Qt\QtMsBuild303" #303 Against visual studio project version
- $Env:QtToolsPath="$Env:QT_PATH\bin" #Support QtMSBuild , At desktop is done by the plug in
- $Env:PATH="$Env:QtMsBuild;$Env:PATH"
- $Env:PATH="$Env:QT_PATH\bin;$Env:PATH"

答案 2 :(得分:0)

我也知道。也许您需要更新Visual Studio,然后重新启动计算机... 问题解决了。原因:安装“ qt vs tools”最新版本,但安装Visual Studio 不支持它。