【问题标题】:CMake/MinGW unknown compilers, gcc.exe brokenCMake/MinGW 未知编译器,gcc.exe 损坏
【发布时间】:2018-05-15 07:58:59
【问题描述】:

我正在尝试在我的 Windows 桌面上安装一个名为 NUPACK 的软件套件,用于设计核酸反应途径。 http://www.nupack.org/

这个软件需要安装CMake,据我了解,CMake本身没有编译器,需要我们单独安装编译器。因此,我下载了 MinGW 以用作 C++ 编译器。在运行之前,我已经设置了 CMake 和 MinGW 的 bin 的环境变量。我正在通过命令提示符运行 CMake(版本 3.11.1),但一直遇到以下问题:

C:\Users\Nicholas\Documents\nupack\build>Cmake -DCMAKE_INSTALL_PREFIX=NUPACKINSTALL -G "MinGW Makefiles" ..
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- Check for working C compiler: C:/MinGW/bin/gcc.exe
-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- broken
CMake Error at C:/Program Files/CMake/share/cmake- 
3.11/Modules/CMakeTestCCompiler.cmake:52 (message):
  The C compiler

    "C:/MinGW/bin/gcc.exe"

  is not able to compile a simple test program.

我猜 CMake 无法以某种方式识别我的 MinGW gcc 和 gcc++ 编译器。接下来我尝试了以下方法,但出现了同样的错误。

set CMAKE_C_COMPILER=%C:\mingw\bin\gcc%
set CMAKE_CXX_COMPILER=%C:\mingw\bin\g++%

有人遇到过同样的问题吗?这可以通过使用 MinGW64 来解决吗?我使用的是 Windows 10,之前我尝试使用 Visual Studio 2017 的编译器,但它也存在一系列问题。

【问题讨论】:

  • 失败的原因可以在CMakeFiles\CMakeError.log找到
  • 我在尝试构建 LuaDist 时遇到了同样的问题。非常令人困惑的是,cmake 打印了 gcc 的完整路径,但随后无法找到它(除非它是由于正斜杠)。

标签: c++ cmake mingw


【解决方案1】:

是的,问题是 CMake 找不到 GCC 编译器。在确保已安装 g++ 和 gcc 之前。它可以是 MinGW64 或 Cygwin。

至少有三种方式可以链接GCC编译器。

第一种方式:

CMakeLists.txt中设置编译器:

set(CMAKE_C_COMPILER C:\path\to\gcc.exe)
set(CMAKE_CXX_COMPILER C:\path\to\g++.exe)

第二种方式:

在终端或cmd中调用cmake时:

cmake -DCMAKE_C_COMPILER="C:\path\to\gcc.exe" -DCMAKE_CXX_COMPILER="C:\path\to\g++.exe"

第三种方式:

设置为环境变量: 转到Windows“环境变量”并添加到PATH这个:

;C:\path_to_MinGW_or_Cygwin\bin

【讨论】:

  • 嗨,Ugnius,感谢您的建议!只是为了检查,旧版本的MinGW不兼容吗?我一直在使用 MinGW(非 64 位版本)。会不会因为我没有使用 MinGW64 而发生错误?
  • 64 位或 32 位版本应该不是问题。我建议你使用 MinGW 或 Cygwin 工具链。然后使用所选工具链中的编译器。在你应该在环境变量中添加一个到bin 工具链文件夹的路径之后。
  • 我在编译 Google 测试时正在尝试 1,2 和 3,但它不起作用。对于 (1) 和 (2),我在解析 C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin\gcc.exeerror 时得到一个 Invalid escape sequence \m。对于 (3),当使用 cmake CMakeLists.txt -DCMAKE_MAKE_PROGRAM=mingw32-make.exe -G "MinGW Makefiles" 调用 CMake 时,我得到一个损坏的编译器错误。
  • 你能尝试只运行 CMake 而不定义 make 吗?然后当 CMake 将生成文件运行 make?
【解决方案2】:

我有类似的问题。 我的设置是:VSCode (Windows 10) + GCC 9.2xx + CMake 3.18.2 环境变量已设置为指向 GCC 和 CMake。

这有效:https://stackoverflow.com/a/4101496/2865353 需要清理 CMakeCache.txt 和 CMakeFiles 目录。

它修复的错误是:

-- Building for: NMake Makefiles
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
  The CMAKE_C_COMPILER:
    cl
  is not a full path and was not found in the PATH.

CMake Error at CMakeLists.txt:3 (project):
The CMAKE_CXX_COMPILER:
    cl
is not a full path and was not found in the PATH.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2016-10-25
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多