Imansible specificare il compilatore con CMake

Ho un problema con questo file CMakeLists.txt :

 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) 

Chiamando cmake con: cmake -G "MinGW Makefiles" , fallisce con il seguente output:

 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! 

Comunque il compilatore gcc trova in C:/MinGW/bin/ e funziona.

Qualche idea?

Piattaforma:

  • Windows 7
  • MinGW / GCC 4.6

Non provare mai a impostare il compilatore nel file CMakeLists.txt .

Vedi le FAQ di CMake su come utilizzare un compilatore diverso:

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

(Nota che stai provando il metodo # 3 e le FAQ dicono “(evitare)” …)

Raccomandiamo di evitare la tecnica “in the CMakeLists” perché ci sono problemi con esso quando è stato usato un compilatore diverso per una prima configurazione, quindi il file CMakeLists cambia per provare a impostare un compilatore diverso … E perché l’intento di un file CMakeLists dovrebbe funzionare con più compilatori, in base alle preferenze dello sviluppatore che esegue CMake.

Il metodo migliore consiste nell’impostare le variabili di ambiente CC e CXX prima di chiamare CMake per la prima volta in un albero di generazione.

Dopo che CMake rileva quali compilatori utilizzare, li salva nel file CMakeCache.txt modo che possa ancora generare sistemi di compilazione appropriati anche se tali variabili scompaiono dall’ambiente …

Se è necessario modificare i compilatori, è necessario iniziare con un nuovo albero di build.

Ho avuto un problema simile a Pietro,

Sono su Window 10 e uso “Git Bash”. Ho provato ad eseguire >> cmake -G “MakeGiles MinGW”, ma ho avuto lo stesso errore di Pietro.

Poi, ho provato >> cmake -G “MSYS Makefiles”, ma ho capito che ho bisogno di impostare correttamente il mio ambiente.

Assicurati di impostare un percorso per C: \ MinGW \ msys \ 1.0 \ bin e controlla se hai gcc.exe lì. Se gcc.exe non è presente, è necessario eseguire C: /MinGW/bin/mingw-get.exe e installare gcc da MSYS.

Dopo di ciò funziona bene per me

Ho avuto lo stesso problema. E nel mio caso la soluzione era piuttosto semplice. Il trucco è semplicemente aggiungere “.exe” al percorso del tuo compilatore. Quindi, invece di:

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

Dovrebbe essere

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

Lo stesso vale per g ++.