2016-08-31 5 views
-1

У меня есть странная проблема с CMake при нажатии кнопки Configure.Отчеты CMake разбиты g ++ и отсутствуют libiconv-2.dll

Он сообщает мне все время, что отсутствует libiconv-2.dll и не удалось завершить операцию. Однако эта библиотека присутствует в папке MinGW/bin.

Я использую CodeBlocks-MinGW Makefiles и CMake версии 3.6.1 - 32-разрядную версию (хотя эта же проблема с 64-разрядной версией). Одна интересная вещь в том, что в Consol он показывает:

The CXX compiler identification is unknown

Check for working CXX compiler: C:/MinGW/bin/g++.exe

Check for working CXX compiler: C:/MinGW/bin/g++.exe -- broken

MinGW корректно добавляется к системному пути, и я был в состоянии проверить версию (GNU 4.8.1), а также скомпилировать простой привет мир из командной строки с помощью:

g++ test.cpp -o test 

Тестирование это же CMakeLists файл на другой машине с той же конфигурацией, но старше CMake версии 3.2.3 все работает. Выполняя некоторые исследования в Интернете, я обнаружил, что проблема с этим файлом не нова, поэтому я сомневаюсь, что это проблема с версией.

Кто-нибудь знает, что можно сделать больше?

EDIT 1 Это содержание CMakeError.log

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. Compiler: C:/MinGW/bin/g++.exe Build flags: Id flags:

The output was: 1

Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. Compiler: C:/MinGW/bin/g++.exe Build flags: Id flags: -c

The output was: 1

Checking whether the CXX compiler is IAR using "" did not match "IAR .+ Compiler": g++.exe: fatal error: no input files compilation terminated. Determining if the CXX compiler works failed with the following output: Change Dir: C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp

Run Build Command:"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.exe 1 : Entering directory 'C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp'

Building CXX object 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: recipe for target 'CMakeFiles/cmTC_c9a03.dir/testCXXCompiler.cxx.obj' failed

mingw32-make.exe 1 : *** [CMakeFiles/cmTC_c9a03.dir/testCXXCompiler.cxx.obj] Error 1

mingw32-make.exe 1 : Leaving directory 'C:/Users/testuser/Desktop/build/CMakeFiles/CMakeTmp'

Makefile:125: recipe for target 'cmTC_c9a03/fast' failed

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

Я вручную скомпилирован файл testCXXCompiler.cpp с г ++, и она работала. Во время компиляции не было ошибок.

EDIT 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) 

У меня есть еще проблемы с отсутствующими библиотеки. Консольный выход немного изменился, и теперь он составляет:

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

+0

Похож на сломанную установку MinGW. – usr1234567

+0

@ usr1234567 Я сомневаюсь, что, поскольку я могу скомпилировать с MinGW в каждом другом случае - из командной строки, из Code :: Blocks – sebap123

+0

Можете ли вы скомпилировать тестовую программу CMake в файле CMakeError.out с той же командой, что и там? – usr1234567

ответ

0

Я полагаю, что нашел ответ. По крайней мере, это работает для меня.

По-видимому мне нужно было запустить CMake на другой машине в качестве администратора . Таким образом, я предполагаю, что он мог получить доступ к файлам GCC правильно. Тем не менее, я не совсем уверен, почему на другой машине это не требовалось и отлично работало.