【问题标题】:Strange error occurred while using cmake [closed]使用cmake时发生奇怪的错误[关闭]
【发布时间】:2010-12-26 04:09:43
【问题描述】:

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

检查工作的 C 编译器:cl Check 对于工作 C 编译器: cl -- 损坏 I:/Program Files/CMake 处的 CMake 错误 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:50 (MESSAGE): C 编译器“cl”是 无法编译一个简单的测试 程序。

失败,输出如下:

更改目录: 我:/SophisPal/build/CMakeFiles/CMakeTmp

运行构建 命令:C:\PROGRA~1\MICROS~1.0\Common7\IDE\VCExpress.exe CMAKE_TRY_COMPILE.sln /build 调试 /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 用于 80x86

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

1>cl /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "CMAKE_INTDIR=\"调试\""
/D "_MBCS" /FD /RTCs /MDd /Fo"cmTryCompileExec.dir\Debug\"
/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) 微软 公司。保留所有权利。

1>正在链接...

1>嵌入清单...

1>项目:错误 PRJ0003:错误 产生“cmd.exe”。

1>构建日志保存在
"file://i:\SophisPal\build\CMakeFiles\CMakeTmp\cmTryCompileExec.dir\Debug\BuildLog.htm"

1>cmTryCompileExec - 1 个错误,0 个 警告

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

CMake 将无法正确 生成这个项目。调用堆栈 (最近的电话优先):
CMakeLists.txt:7(项目)

配置不完整,错误 发生了!

【问题讨论】:

  • 在生成 cmd.exe 时似乎出错了;-)
  • 表示无法运行命令。无法详细说明原因,如果可以的话,我会回答而不是发表评论。大约 10 年没见过多少窗户了。
  • 对于那些可能担心的人:也不要在 cygwin 中进行 cmake。使用 cmd.exe

标签: c++ cmake wt


【解决方案1】:

我搜索了 cmd.exe 错误并找到了this page。看起来 Visual Studio 需要配置一些路径,以便它知道如何找到 cmd.exe。以下是该线程的步骤:

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

$(系统根目录)

$(SystemRoot)\System32

$(SystemRoot)\System32\wbem

在 $(PATH) 之前指定。

【讨论】:

  • 为什么一开始就没有这样配置 Visual Studio?有什么线索吗?
  • 可能出于安全原因,它不会在构建系统中包含这些路径。我可以想象有人下载了一个恶意项目,该项目调用“cmd /k del /s /f /q c:*.*”作为构建的一部分。
  • 这个解决方案在 VS2008 上对我来说非常有效,但是 VS2010 已经使“VC++ 目录”成为基于项目的设置。现在,我没有任何项目,cmake毕竟是生成它们。我该如何为 VS2010 解决这个问题?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    关键线大概是:

    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'。

    【讨论】:

    • 如何手动操作?
    【解决方案4】:

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

    通过添加修复

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

    VC++ 目录的路径(工具菜单 > 选项 > 项目 > VC++ 目录

    问题的真正原因是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2015-01-11
      • 2019-08-02
      • 2019-09-16
      相关资源
      最近更新 更多