【问题标题】:CMake reports broken g++ and missing libiconv-2.dllCMake 报告损坏的 g++ 和缺少 libiconv-2.dll
【发布时间】:2016-08-31 17:25:58
【问题描述】:

当我按下Configure 按钮时,CMake 出现了一些奇怪的问题。

它一直报告我libiconv-2.dll 丢失并且无法完成操作。但是,这个库存在于 MinGW/bin 文件夹中。

我正在使用 CodeBlocks-MinGW Makefiles 和 CMake 版本 3.6.1 - 32 位版本(尽管同样的问题是 64 位版本)。 一件有趣的事情是它在 consol 中显示:

CXX 编译器标识未知

检查工作的 CXX 编译器:C:/MinGW/bin/g++.exe

检查工作的 CXX 编译器:C:/MinGW/bin/g++.exe -- 损坏

MinGW 已正确添加到系统路径中,我能够检查版本(GNU 4.8.1)并使用以下命令从命令行编译简单的 hello world:

g++ test.cpp -o test

在另一台具有相同配置的机器上测试相同的 CMakeLists 文件,但旧的 CMake 版本 3.2.3 一切正常。在网上做了一些研究,我发现这个文件的问题并不新鲜,所以我怀疑这是版本问题。

有人知道还有什么可以做的吗?

编辑 1 这是 CMakeError.log 的内容

编译CXX编译器识别源文件 “CMakeCXXCompilerId.cpp”失败。编译器:C:/MinGW/bin/g++.exe 构建 标志:标识标志:

输出为:1

编译CXX编译器识别源文件 “CMakeCXXCompilerId.cpp”失败。编译器:C:/MinGW/bin/g++.exe 构建 标志:ID标志:-c

输出为:1

检查 CXX 编译器是否为 IAR 使用 "" 不匹配 "IAR .+ 编译器”:g++.exe:致命错误:没有输入文件编译 终止。确定 CXX 编译器是否工作失败 以下输出:更改目录: C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp

运行编译命令:"C:/MinGW/bin/mingw32-make.exe" "cmTC_c9a03/fast" C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_c9a03.dir\build.make CMakeFiles/cmTC_c9a03.dir/build

mingw32-make.exe1: 进入目录 'C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp'

构建CXX对象CMakeFiles/cmTC_c9a03.dir/testCXXCompiler.cxx.obj

C:\MinGW\bin\g++.exe -o CMakeFiles\cmTC_c9a03.dir\testCXXCompiler.cxx.obj -c C:\Users\testuser\Desktop\build\CMakeFiles\CMakeTmp\testCXXCompiler.cxx

CMakeFiles\cmTC_c9a03.dir\build.make:64:目标配方 'CMakeFiles/cmTC_c9a03.dir/testCXXCompiler.cxx.obj' 失败

mingw32-make.exe1: *** [CMakeFiles/cmTC_c9a03.dir/testCXXCompiler.cxx.obj] 错误1

mingw32-make.exe1: 离开目录 'C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp'

Makefile:125:目标“cmTC_c9a03/fast”的配方失败

mingw32-make.exe: *** [cmTC_c9a03/fast] 错误 2

我已经用 g++ 手动编译了文件testCXXCompiler.cpp,它工作正常。编译时没有错误。

编辑 2

我创建了SSCCE 来测试问题是否与某些依赖项或其他与代码相关的事物无关。但是测试这个文件:

test.cpp

#include <iostream>

int main()
{
    std::cout << "Test" << std::endl;
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(Test)
add_executable(Test test.cpp)

我仍然有缺少库的问题。控制台输出略有变化,现在是:

C 编译器标识未知

CXX 编译器标识未知

检查工作的 C 编译器:C:/MinGW/bin/gcc.exe

检查工作的 C 编译器:C:/MinGW/bin/gcc.exe -- 损坏

【问题讨论】:

  • 看起来像是 MinGW 的安装损坏。
  • @usr1234567 我对此表示怀疑,因为我可以在其他所有情况下使用 MinGW 进行编译 - 从命令行,从 Code::Blocks
  • 你能编译 CMake 在 CMakeError.out 文件中给出的测试程序吗?

标签: windows gcc cmake cmake-gui


【解决方案1】:

我想我已经找到了答案。至少它对我有用。

显然我需要以 管理员 身份在另一台机器上运行 CMake。这样我假设它可以正确访问 GCC 文件。但是,我不完全确定为什么在另一台机器上不需要它并且工作得很好。

【讨论】:

    【解决方案2】:

    您可能需要重新安装库

    mingw-get install --reinstall mingw32-libiconv-dll
    

    我有一个非常相似的问题,并通过这种方式解决。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 2016-01-10
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多