使用cmake时发生奇怪的错误

时间:2009-12-13 13:26:33

标签: c++ cmake wt

有谁知道“C编译器”cl“无法编译简单的测试程序。”意味着什么?
我正在尝试使用MSVC 9上的CMake编译Wt 操作系统是Windows XP 这是完整的日志:

  

检查工作C编译器:cl检查   用于工作的C编译器:cl - 已损坏   I:CMake错误:/ Program Files / CMake   2.8 /共享/ cmake的-2.8 /模块/ CMakeTestCCompiler.cmake:50   (消息):C编译器“cl”是   无法编译简单的测试   程序

     

它失败并显示以下输出:

     

改变目录:   I:/ SophisPal /建造/ CMakeFiles / CMakeTmp

     

运行Build   命令:C:\ PROGRA〜1 \ MICROS〜1.0 \ Common7 \ IDE \ VCExpress.exe   CMAKE_TRY_COMPILE.sln / build Debug   / project cmTryCompileExec

     

Microsoft(R)Visual C ++ Express   版本9.0.30729.1。

     

版权所有(C)Microsoft Corp 2007。   保留所有权利。

     

1> ------构建开始:项目:   cmTryCompileExec,配置:调试   Win32 ------

     

1>编译...

     

1> Microsoft(R)32位C / C ++   优化编译器版本   15.00.30729.01 for 80x86

     

1>版权所有(C)Microsoft   公司。保留所有权利。

     

1> cl / Od / D“WIN32”/ D“_WINDOWS”/ D.   “_DEBUG”/ D“CMAKE_INTDIR = \”Debug \“”
  / D“_MBCS”/ FD / RTC / MDd   / FO “cmTryCompileExec.dir \调试\”
  /Fd"I:/SophisPal/build/CMakeFiles/CMakeTmp/Debug/cmTryCompileExec.pdb”   / W3 / c / Zi / TC / Zm1000

     

1> \ testCCompiler.c

     

1> testCCompiler.c

     

1>将清单编译为资源......

     

1> Microsoft(R)Windows(R)资源   编译器版本6.1.6723.1

     

1>版权所有(C)Microsoft   公司。保留所有权利。

     

1>链接...

     

1>嵌入清单...

     

1>项目:错误PRJ0003:错误   产卵'cmd.exe'。

     

1>构建日志保存在
  “文件:// I:\ SophisPal \建立\ CMakeFiles \ CMakeTmp \ cmTryCompileExec.dir \调试\ BuildLog.htm”

     

1> cmTryCompileExec - 1个错误,0   警告(S)

     

==========构建:0成功,1失败,0最新,0跳过==========

     

CMake将无法正确使用   生成这个项目。调用堆栈   (最近一次电话会议):
  CMakeLists.txt:7(项目)

     

配置不完整的错误   发生!

4 个答案:

答案 0 :(得分:6)

我用Google搜索了cmd.exe错误,并提出了this page。看起来Visual Studio需要配置一些路径,因此它知道如何查找cmd.exe。以下是该主题的步骤:

  

您必须做的是更改MSVS选项(工具菜单>选项>项目和解决方案> VC ++目录)以确保

     

$(SYSTEMROOT)

     

$(SYSTEMROOT)\ System32下

     

$(SYSTEMROOT)\ System32下\ WBEM

     

是在$(PATH)之前指定的。

答案 1 :(得分:2)

检查您安装的任何其他工具是否覆盖了PATH变量。在我的情况下,这发生了,症状(链接错误)完全相同。

答案 2 :(得分:1)

关键线可能是:

1>Project : error PRJ0003 : Error spawning 'cmd.exe'.

由于某种原因,MSVC无法执行'cmd.exe',因此编译失败。

我猜这个问题可能与%PATH%的设置有关;可能还有其他原因造成麻烦。

尝试做CMake手动完成的工作 - 看看你是否得到了同样的错误。这将帮助您诊断问题是否在CMake中(如果它在命令行中对您有效)或在一般环境中(如果它对您不起作用)。


了解如何阅读错误消息!

Change Dir: I:/SophisPal/build/CMakeFiles/CMakeTmp

Run Build Command:C:\PROGRA~1\MICROS~1.0\Common7\IDE\VCExpress.exe CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec

这是输出中的两个早期行。第一个表示CMake将目录更改为其中一个创建。第二个表示它在那里运行的命令。在运行命令之前,您还需要找出它在目录中创建的文件。

掌握了这些信息后,您必须完成相同的步骤 - 'cd'后跟'vcexpress'。

答案 3 :(得分:1)

我在VS 7 .NET 2003上遇到了同样的问题。

通过添加

修复
<MSVS .NET 2003 Home>\Vc7\bin
<MSVS .NET 2003 Home>\Common7\IDE

VC ++目录的路径(工具菜单&gt;选项&gt;项目&gt; VC ++目录

问题的真正原因是:

  1. 在系统或MSVS路径中找不到cl.exe;
  2. cl.exe需要mspdb71.dll。