it-swarm.com.de

Der Compiler kann nicht mit CMake angegeben werden

Ich habe ein Problem mit dieser CMakeLists.txt-Datei:

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)

project(cmake_test)

add_executable(a.exe test.cpp)

Beim Aufruf von cmake mit: cmake -G "MinGW Makefiles" schlägt die folgende Ausgabe fehl:

c:\Users\pietro.mele\projects\tests\buildSystem_test\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
-- The CXX compiler identification is GNU 4.6.1
-- Check for working C compiler: C:/MinGW/bin/gcc
CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: C:/MinGW/bin/gcc -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "C:/MinGW/bin/gcc" is not able to compile a simple test
  program.

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:10 (project)

CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: your CXX compiler: "C:/MinGW/bin/g++" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
-- Configuring incomplete, errors occurred!

Der gcc-Compiler befindet sich jedoch in C:/MinGW/bin/ und funktioniert.

Irgendeine Idee?

Plattform:

  • Windows 7 
  • MinGW/GCC 4.6 
29
Pietro

Versuchen Sie niemals, den Compiler in der CMakeLists.txt-Datei festzulegen.

Im CMake FAQ erfahren Sie, wie Sie einen anderen Compiler verwenden:

https://gitlab.kitware.com/cmake/community/wikis/FAQ#how-do-i-use-a-different-compiler

(Beachten Sie, dass Sie Methode 3 versuchen und das FAQ sagt "(vermeiden)" ...)

Wir empfehlen, die Technik "in den CMakeLists" zu vermeiden, da Probleme auftreten, wenn für eine erste Konfiguration ein anderer Compiler verwendet wurde. Anschließend ändert sich die CMakeLists-Datei, um einen anderen Compiler einzurichten sollte mit mehreren Compilern arbeiten, je nach Präferenz des Entwicklers, der CMake ausführt.

Am besten setzen Sie die Umgebungsvariablen CC und CXX, bevor Sie CMake zum ersten Mal in einer Build-Struktur aufrufen.

Nachdem CMake festgestellt hat, welche Compiler verwendet werden sollen, speichert es diese in der Datei CMakeCache.txt, sodass auch dann korrekte Build-Systeme erstellt werden können, wenn diese Variablen aus der Umgebung verschwinden ...

Wenn Sie Compiler jemals ändern müssen, müssen Sie mit einem neuen Build-Baum beginnen.

52
DLRdave

Ich hatte ein ähnliches Problem wie Pietro,

Ich bin in Fenster 10 und benutze "Git Bash" . Ich habe versucht, >> cmake -G "MinGW Makefiles" auszuführen, aber ich habe den gleichen Fehler wie Pietro.

Dann habe ich >> cmake -G "MSYS Makefiles" ausprobiert, aber mir wurde klar, dass ich meine Umgebung richtig einstellen muss.

Stellen Sie sicher, dass ein Pfad auf C:\MinGW\msys\1.0\bin eingestellt ist, und überprüfen Sie, ob Sie dort gcc.exe installiert haben. Wenn gcc.exe nicht vorhanden ist, müssen Sie C: /MinGW/bin/mingw-get.exe ausführen und gcc von MSYS installieren.

Danach funktioniert es gut für mich

4
junghyun jun

Die Verwendung der Option FILEPATH könnte funktionieren:

set(CMAKE_CXX_COMPILER:FILEPATH C:/MinGW/bin/gcc.exe)
1
adem

Ich hatte das gleiche Problem. Und in meinem Fall war das Update ziemlich einfach. Der Trick besteht darin, einfach die ".exe" zu Ihrem Compilerpfad hinzuzufügen. Also statt:

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)

Es sollte sein 

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc.exe)

Gleiches gilt für g ++.

0
Joel