笔者在msbuild编译qt界面文件会出现Moc'ing文件,系统找不到指定路径问题。
点击“生成解决方案 F7”会报错:
Moc' ing ***.h
系统找不到指定的路径。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(171,5): error MSB6006 cmd.exe 已退出,代码为3。
上述错误提示是因为MSBuild找不到Qt的moc.exe所在路径,从而导致预编译Q_OBJECT文件失败。 根据工程在本地VS上能否编译通过,分为两种情况:
1、若无法编译通过,则Qt类库或者Qt Visual Studio Add-in插件安装有问题,需重新安装。
2、若无法编译通过,则是工程的Qt类库路径($QTDIR)与本地VS配置的Qt类库路径不相同,打开工程路径下的工程配置文件xxx.vcxproj.user,可以观察和分析QTDIR的路径。
解决方案如下:
方案1、不理会它,直接点击“开始执行(不调试) Ctrl+F5”.原因是ui_window.h不能识别,就不用理会 ,直接点击运行 然后 ui_window.h就会自动生成了.下次再编译就好了.
方案2、找到VS2015的解决方案资源管理器,右键工程项目,弹出菜单,点击“convert project to QMake generated project”,此时工程文件xxx.vcxproj.user会发生变化。
xxx.vcxproj.user举例如下:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment> <QTDIR>C:\Qt\Qt5.9.1\5.9.1\msvc2015</QTDIR> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment> <QTDIR>C:\Qt\Qt5.9.1\5.9.1\msvc2015</QTDIR> </PropertyGroup> </Project>
其中<QTDIR>C:\Qt\Qt5.9.1\5.9.1\msvc2015</QTDIR>是convert project...之后工具自动添加的。如果自动添加失败,程序员可以手动添加,分别新增Debug|Win32和Release|Win32下QTDIR的路径值,使其与本地VS配置的Qt类库路径相同。 重新编译后即可。
笔者分别使用方案1和2,成功解决!1若不行咱就用2!