error MSB6006: “cmd.exe”已退出,代码为 1

我有一个VS 12解决方案与我自己的项目,这取决于一些依赖项(使用cmake生成的项目文件)。我使用cmake生成这些VS12项目,并将这些项目添加到我的解决方案(使用相对路径)。然后我不得不调整这些项目的输出目录,建立目标在其他地方我自己的项目可以找到他们(所以只是运行cmake后,路径更改不能解决我的问题,因为我将编辑所有项目



如果现在解决方案的绝对路径更改,解决方案仍然可以找到项目 - 但是在构建我从cmake收到错误,“老路径“不存在。



重现我的问题的步骤




  1. 下载cmake项目 a>。
  2. 解压缩到 C:\cmake的目录
  3. code> C:\ cmake \build
  4. 打开命令行并转到 C :\cmake\build
  5. 执行 cmake ..
  6. 将 C:\cmake 目录重命名为 C:\cmake2
  7. 打开解决方案 C:\cmake2\build\CMake.sln


将出现一个包含错误的长列表(太长,无法完全包含在内) - 都是由于旧路径“C:\cmake \”ist仍在某处使用而导致的。示例:



  1> ------构建开始:项目:ZERO_CHECK,配置:调试Win32 ---- -  
 2> ------跳过生成:项目:RUN_TESTS,配置:调试Win32 ------ 
 2>未选择项目以构建此解决方案配置
 1。检查构建系统
 1> CMake正在重新运行,因为C:/cmake/build/CMakeFiles/generate.stamp依赖文件丢失。 
 1> CUSTOMBUILD:CMake错误:源目录“C:/ cmake”似乎不包含CMakeLists.txt。 
 1>指定--help用于使用,或按CMake GUI上的帮助按钮。 
 3> ------构建开始:项目:cmbzip2,配置:调试Win32 ------ 
 4> ------构建开始:项目:cmzlib,配置:调试Win32 ------ 
 5> ------构建已启动:项目:cmexpat,配置:调试Win32 ------ 
 6> ------构建启动:项目:cmsys,配置:调试Win32 ------ 
 3> C:\Windows \Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(1422, 5):warning:引用项目“C:/cmake/build/ZERO_CHECK.vcxproj”不存在。 
  


我想生成VS项目文件只有一次 - 不是再次,如果文件夹的位置更改。任何想法如何cmake可以使用相对路径?


解决方案

即使问题是downvote我会提供一个答案在这里人们面临同样的问题(根据他们的环境,这可能是我的意见中真正的问题)。



我从我的参考的所有项目文件中删除至少解决以下部分:



 < ItemGroup> 
< CustomBuild Include =“.. \..\Source\CMakeLists.txt”> 
<消息条件=“'$(配置)| $(平台)'=='Debug | Win32'”>构建自定义规则C:/cmake/Source/CMakeLists.txt< / Message> 
< Command Condition =“'$(Configuration)| $(Platform)'=='Debug | Win32'”> setlocal 
“C:\Program Files\CMake 2.8 \bin \cmake.exe“-HC:/ cmake -BC:/ cmake / build --check-stamp-file C:\cmake\build\Source\CMakeFiles\generate.stamp 
 if% errorlevel%neq 0 goto:cmEnd 
:cmEnd 
 endlocal& amp; call:cmErrorLevel%errorlevel%& amp; goto:cmDone 
:cmErrorLevel 
退出/ b%1 
:cmDone 
如果%errorlevel%neq 0 goto:VCEnd< / Command> 
< AdditionalInputs Condition =“'$(Configuration)| $(Platform)'=='Debug | Win32'”> C:/cmake/Source/CMakeLists.txt; C:\cmake\Source \CMakeLists.txt; C:\Program Files \CMake 2.8 \share \cmake-2.8 \Modules\CheckIncludeFile.cmake; C:\Program Files \CMake 2.8 \share \cmake- 2.8 \Modules\CheckIncludeFile.c.in; C:\cmake\Source\cmConfigure.cmake.h.in; C:\cmake\Source\cmVersionConfig.h.in; C:\ cmake\Source\CPack\cmCPackConfigure.h.in; C:\cmake\Source\CMakeLists.txt;%(AdditionalInputs)< / AdditionalInputs> 
<输出条件=“'$(配置)| $(平台)'=='Debug | Win32'”> C:\cmake\build\Source\CMakeFiles\generate.stamp< ; / Outputs> 
< LinkObjects Condition =“'$(Configuration)| $(Platform)'=='Debug | Win32'”> false< / LinkObjects> 
<消息条件=“'$(配置)| $(平台)'=='版本| Win32'”>建立自定义规则C:/cmake/Source/CMakeLists.txt< / Message> 
< Command Condition =“'$(Configuration)| $(Platform)'=='Release | Win32'”> setlocal 
“C:\Program Files\CMake 2.8 \bin \cmake.exe“-HC:/ cmake -BC:/ cmake / build --check-stamp-file C:\cmake\build\Source\CMakeFiles\generate.stamp 
 if% errorlevel%neq 0 goto:cmEnd 
:cmEnd 
 endlocal& amp; call:cmErrorLevel%errorlevel%& amp; goto:cmDone 
:cmErrorLevel 
退出/ b%1 
:cmDone 
如果%errorlevel%neq 0 goto:VCEnd< / Command> 
< AdditionalInputs Condition =“'$(Configuration)| $(Platform)'=='Release | Win32'”> C:/cmake/Source/CMakeLists.txt; C:\cmake\Source \CMakeLists.txt; C:\Program Files \CMake 2.8 \share \cmake-2.8 \Modules\CheckIncludeFile.cmake; C:\Program Files \CMake 2.8 \share \cmake- 2.8 \Modules\CheckIncludeFile.c.in; C:\cmake\Source\cmConfigure.cmake.h.in; C:\cmake\Source\cmVersionConfig.h.in; C:\ cmake\Source\CPack\cmCPackConfigure.h.in; C:\cmake\Source\CMakeLists.txt;%(AdditionalInputs)< / AdditionalInputs> 
< Outputs Condition =“'$(Configuration)| $(Platform)'=='Release | Win32'”> C:\cmake\build\Source\CMakeFiles\generate.stamp< ; / Outputs> 
< LinkObjects Condition =“'$(Configuration)| $(Platform)'=='Release | Win32'”> false< / LinkObjects> 
<消息条件=“'$(配置)| $(平台)'=='MinSizeRel | Win32'”>建立自定义规则C:/cmake/Source/CMakeLists.txt< / Message> 
< Command Condition =“'$(Configuration)| $(Platform)'=='MinSizeRel | Win32'”> setlocal 
“C:\Program Files \CMake 2.8 \bin \cmake.exe“-HC:/ cmake -BC:/ cmake / build --check-stamp-file C:\cmake\build\Source\CMakeFiles\generate.stamp 
 if% errorlevel%neq 0 goto:cmEnd 
:cmEnd 
 endlocal& amp; call:cmErrorLevel%errorlevel%& amp; goto:cmDone 
:cmErrorLevel 
退出/ b%1 
:cmDone 
如果%errorlevel%neq 0 goto:VCEnd< / Command> 
< AdditionalInputs Condition =“'$(Configuration)| $(Platform)'=='MinSizeRel | Win32'”> C:/cmake/Source/CMakeLists.txt; C:\cmake\Source \CMakeLists.txt; C:\Program Files \CMake 2.8 \share \cmake-2.8 \Modules\CheckIncludeFile.cmake; C:\Program Files \CMake 2.8 \share \cmake- 2.8 \Modules\CheckIncludeFile.c.in; C:\cmake\Source\cmConfigure.cmake.h.in; C:\cmake\Source\cmVersionConfig.h.in; C:\ cmake\Source\CPack\cmCPackConfigure.h.in; C:\cmake\Source\CMakeLists.txt;%(AdditionalInputs)< / AdditionalInputs> 
< Outputs Condition =“'$(Configuration)| $(Platform)'=='MinSizeRel | Win32'”> C:\cmake\build\Source\CMakeFiles\generate.stamp< ; / Outputs> 
< LinkObjects Condition =“'$(Configuration)| $(Platform)'=='MinSizeRel | Win32'”> false< / LinkObjects> 
<消息条件=“'$(配置)| $(平台)'=='RelWithDebInfo | Win32'”>建立自定义规则C:/cmake/Source/CMakeLists.txt< / Message> 
< Command Condition =“'$(Configuration)| $(Platform)'=='RelWithDebInfo | Win32'”> setlocal 
“C:\Program Files\CMake 2.8 \bin \cmake.exe“-HC:/ cmake -BC:/ cmake / build --check-stamp-file C:\cmake\build\Source\CMakeFiles\generate.stamp 
 if% errorlevel%neq 0 goto:cmEnd 
:cmEnd 
 endlocal& amp; call:cmErrorLevel%errorlevel%& amp; goto:cmDone 
:cmErrorLevel 
退出/ b%1 
:cmDone 
如果%errorlevel%neq 0 goto:VCEnd< / Command> 
< AdditionalInputs Condition =“'$(Configuration)| $(Platform)'=='RelWithDebInfo | Win32'”> C:/cmake/Source/CMakeLists.txt; C:\cmake\Source \CMakeLists.txt; C:\Program Files \CMake 2.8 \share \cmake-2.8 \Modules\CheckIncludeFile.cmake; C:\Program Files \CMake 2.8 \share \cmake- 2.8 \Modules\CheckIncludeFile.c.in; C:\cmake\Source\cmConfigure.cmake.h.in; C:\cmake\Source\cmVersionConfig.h.in; C:\ cmake\Source\CPack\cmCPackConfigure.h.in; C:\cmake\Source\CMakeLists.txt;%(AdditionalInputs)< / AdditionalInputs> 
< Outputs Condition =“'$(Configuration)| $(Platform)'=='RelWithDebInfo | Win32'”> C:\cmake\build\Source\CMakeFiles\generate.stamp< ; / Outputs> 
< LinkObjects Condition =“'$(Configuration)| $(Platform)'=='RelWithDebInfo | Win32'”> false< / LinkObjects> 
< / CustomBuild> 
< / ItemGroup> 
  


和:



 < ItemGroup> 
< ProjectReference Include =“C:/cmake/build/ZERO_CHECK.vcxproj”> 
< Project> FE0DC35D-28F6-4786-A563-DFE14862A57F< / Project> 
< / ProjectReference> 
< / ItemGroup> 
  


这可以防止CMakeLists.txt在每次构建之前检查更改的行为。如果项目文件中的所有其他路径都是相对的,cmake项目现在可以在硬盘上自由移动。



这个自定义构建步骤的问题是:在Visual Studios项目设置中,因此必须手动编辑纯文本.vcxproj。


发布了12 篇原创文章 · 获赞 7 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/rqf520/article/details/79064470