VS2015+Qt5.9.1编译报错:Moc系统找不到指定路径,error MSB6006 cmd.exe 已退出,代码为3 -- 完美解决

笔者在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!



上一篇:网站导航如何SEO优化?


下一篇:老男孩教育每日一题-第87天-Nginx需要优化哪些内容?