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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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”,这是在做什么的时候找不到文件?想了很久没想明白,继续向上追溯,看到了

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

复制代码
1
2
3
4
5
6
7
8
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用记事本打开,发现如下配置信息:‘

复制代码
1
2
3
4
5
6
7
8
9
10
<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的机制是什么?这个后续再继续研究。

复制代码
1

最后

以上就是辛勤荷花最近收集整理的关于error MSB6006: "cmd.exe" exited with code 4.解决方法的全部内容,更多相关error内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部