我是靠谱客的博主 辛勤荷花,最近开发中收集的这篇文章主要介绍error MSB6006: "cmd.exe" exited with code 4.解决方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这段时间在调试cefclient的代码,发现在编译的时候总是出错,出错信息如下:

1>CustomBuild:
1>  copy_resources, and also copy_libraries
1>  D:MyCodeMyGitCEFStudyResourcescef.pak -> D:MyCodeMyGitCEFStudyoutDebugcef.pak
1>  D:MyCodeMyGitCEFStudyResourcesdevtools_resources.pak -> D:MyCodeMyGitCEFStudyoutDebugdevtools_resources.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesam.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesam.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesar.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesar.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesbg.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesbg.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesbn.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesbn.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesca.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesca.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalescs.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalescs.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesda.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesda.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesde.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesde.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesel.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesel.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesen-GB.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesen-GB.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesen-US.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesen-US.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleses-419.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleses-419.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleses.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleses.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleset.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleset.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesfa.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesfa.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesfi.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesfi.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesfil.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesfil.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesfr.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesfr.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesgu.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesgu.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleshe.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleshe.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleshi.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleshi.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleshr.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleshr.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleshu.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleshu.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesid.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesid.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesit.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesit.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesja.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesja.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleskn.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleskn.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesko.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesko.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleslt.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleslt.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleslv.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleslv.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesml.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesml.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesmr.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesmr.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesms.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesms.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesnb.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesnb.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesnl.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesnl.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalespl.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalespl.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalespt-BR.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalespt-BR.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalespt-PT.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalespt-PT.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesro.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesro.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesru.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesru.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalessk.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalessk.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalessl.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalessl.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalessr.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalessr.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalessv.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalessv.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalessw.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalessw.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesta.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesta.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleste.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleste.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesth.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesth.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalestr.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalestr.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesuk.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesuk.pak
1>  D:MyCodeMyGitCEFStudyResourceslocalesvi.pak -> D:MyCodeMyGitCEFStudyoutDebuglocalesvi.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleszh-CN.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleszh-CN.pak
1>  D:MyCodeMyGitCEFStudyResourceslocaleszh-TW.pak -> D:MyCodeMyGitCEFStudyoutDebuglocaleszh-TW.pak
1>  复制了 55 个文件
1>  复制了 0 个文件
1>  找不到文件 - *.dll
1>C:Program FilesMSBuildMicrosoft.Cppv4.0Microsoft.CppCommon.targets(151,5): error MSB6006: "cmd.exe" exited with code 4.
1>
1>Build FAILED.



从上面的错误信息来看,error MSB6006。网上搜索了一下,大部分的error code都是1或者别的,没见过4的,也尝试了网上的方法,修改Manifest文件,问题依然没有解决。

于是往上面看,“找不到文件 - *.dll”,这是在做什么的时候找不到文件?想了很久没想明白,继续向上追溯,看到了

copy_resources, and also copy_libraries
而“复制了55个文件”全部是pak文件,那说明都是Resources。那“复制了0个文件”,就是libraries。找不到的dll文件,应该就是libraries。于是,用cefclient压缩包直接解压出来的源代码文件对应一下,发现源文件直接编译的Output信息如下:

1>  D:MyCodeMyGitCEFStudyDebugd3dcompiler_43.dll -> D:MyCodeMyGitCEFStudyoutDebugd3dcompiler_43.dll
1>  D:MyCodeMyGitCEFStudyDebugd3dcompiler_46.dll -> D:MyCodeMyGitCEFStudyoutDebugd3dcompiler_46.dll
1>  D:MyCodeMyGitCEFStudyDebugffmpegsumo.dll -> D:MyCodeMyGitCEFStudyoutDebugffmpegsumo.dll
1>  D:MyCodeMyGitCEFStudyDebugicudt.dll -> D:MyCodeMyGitCEFStudyoutDebugicudt.dll
1>  D:MyCodeMyGitCEFStudyDebuglibcef.dll -> D:MyCodeMyGitCEFStudyoutDebuglibcef.dll
1>  D:MyCodeMyGitCEFStudyDebuglibEGL.dll -> D:MyCodeMyGitCEFStudyoutDebuglibEGL.dll
1>  D:MyCodeMyGitCEFStudyDebuglibGLESv2.dll -> D:MyCodeMyGitCEFStudyoutDebuglibGLESv2.dll
1>  复制了 7 个文件

而我的代码就是缺少了这几个文件,于是拷贝到同一个相对目录下,编译成功,问题得到解决。

然后就有些疑问了,编译的时候是如何拷贝文件的呢?逐一检查Project的属性,没发现有异常。搜索copy_resources,只在cefclient.gyp里找到相应的字符串。可是这个.gyp跟project应该没有任何关系的呀?

继续跟进,将cefclient.vcxproj用记事本打开,发现如下配置信息:‘

  <ItemGroup>
    <CustomBuild Include="binary_distribcef_binary_3.1650.1562_windows32cefclient.gyp">
      <FileType>Document</FileType>
      <Command>call call xcopy /efy "Resources*" "$(OutDir)"
if %errorlevel% neq 0 exit /b %errorlevel%
call call xcopy /efy "$(Configuration)*.dll" "$(OutDir)"</Command>
      <Message>copy_resources, and also copy_libraries</Message>
      <Outputs>$(OutDir)copy_resources.stamp</Outputs>
    </CustomBuild>
  </ItemGroup>

看到这里的Command,就能解释究竟是谁拷贝文件了。xcopy就是拷贝文件的command。

只是这些CustomBuild的配置,在Project的配置里还是没发现在哪里。而且这是如何运行起来的,CustomBuild的机制是什么?这个后续再继续研究。

 

最后

以上就是辛勤荷花为你收集整理的error MSB6006: "cmd.exe" exited with code 4.解决方法的全部内容,希望文章能够帮你解决error MSB6006: "cmd.exe" exited with code 4.解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部