cbu*_*art 3 c++ msbuild qt visual-studio qt-vs-addin
我在Visual Studio中有许多Qt项目,使用的是Qt VS工具提供的新Qt / MsBuild格式。在安装了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时如何解决此类错误?
工具创建者提供的一种解决方案是将其复制%LOCALAPPDATA%\QtMsBuild到每个项目目录中。但是我们正在谈论数百个项目。手动进行操作,以及将其作为项目本身的一部分进行推送,听起来并不优雅。
一种选择是添加一个预构建步骤,将其从一个公共位置复制到每个项目中(并**/QtMsBuild在每个.gitignore文件中添加一行)。同样,看起来工作太多。
在查看Qt项目的.vcxproj文件时,您会发现以下片段(创建者提供解决方案的原因):
<PropertyGroup Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">
<QtMsBuild>$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
因此,最简单的解决方案(无法安装工具)是将%LOCALAPPDATA\QtMsBuild目录(从安装了工具的系统中)复制到夜间计算机(在任何常见的地方),但我决定保留工具使用的位置),然后设置环境变量:
set QtMsBuild=%LOCALAPPDATA%\QtMsBuild
Run Code Online (Sandbox Code Playgroud)
PS:不要在变量中添加双引号(至少我对它们有问题,因此VS无法找到文件)。