当我按下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 构建标志:Id 标志:
输出为:1
编译CXX编译器识别源文件“CMakeCXXCompilerId.cpp”失败。编译器:C:/MinGW/bin/g++.exe 构建标志:Id 标志:-c
输出为:1
使用“”检查 CXX 编译器是否为 IAR 与“IAR .+ Compiler”不匹配:g++.exe:致命错误:没有输入文件编译终止。确定 CXX 编译器是否工作失败,输出如下: Change Dir: 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。目录/构建
mingw32-make.exe 1 : 进入目录'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.exe 1:*** [CMakeFiles/cmTC_c9a03.dir/testCXXCompiler.cxx.obj] 错误 1
mingw32-make.exe 1:离开目录'C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp'
Makefile:125: 目标“cmTC_c9a03/fast”的配方失败
mingw32-make.exe: *** [cmTC_c9a03/fast] 错误 2
我已经testCXXCompiler.cpp
用 g++ 手动编译了文件并且它工作正常。编译过程中没有错误。
编辑 2
我创建了SSCCE来测试问题是否与某些依赖项或其他与代码相关的事物无关。但是测试这个文件:
测试.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 -- 损坏