No se puede especificar el comstackdor con CMake

Tengo un problema con este archivo 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) 

Llamando a cmake con: cmake -G "MinGW Makefiles" , falla con el siguiente resultado:

 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! 

Sin embargo, el comstackdor gcc está en C:/MinGW/bin/ y funciona.

¿Alguna idea?

Plataforma:

  • Windows 7
  • MinGW / GCC 4.6

Nunca intente configurar el comstackdor en el archivo CMakeLists.txt .

Consulte las preguntas frecuentes de CMake sobre cómo usar un comstackdor diferente:

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

(Tenga en cuenta que está intentando el método n. ° 3 y las preguntas frecuentes dicen “(evitar)” …)

Recomendamos evitar la técnica “in the CMakeLists” porque hay problemas cuando se usa un comstackdor diferente para una primera configuración, y luego el archivo CMakeLists cambia para intentar establecer un comstackdor diferente … Y debido a la intención de un archivo CMakeLists debería ser trabajar con múltiples comstackdores, de acuerdo con la preferencia del desarrollador que ejecuta CMake.

El mejor método es establecer las variables de entorno CC y CXX antes de llamar a CMake por primera vez en un árbol de comstackción.

Después de que CMake detecta qué comstackdores usar, los guarda en el archivo CMakeCache.txt para que pueda generar sistemas de comstackción adecuados incluso si esas variables desaparecen del entorno …

Si alguna vez necesita cambiar los comstackdores, debe comenzar con un nuevo árbol de comstackción.

Tuve un problema similar al de Pietro,

Estoy en la ventana 10 y uso “Git Bash”. Traté de ejecutar >> cmake -G “MinGW Makefiles”, pero obtuve el mismo error que Pietro.

Entonces, probé >> cmake -G “MSYS Makefiles”, pero me di cuenta de que necesitaba configurar mi entorno correctamente.

Asegúrese de establecer una ruta a C: \ MinGW \ msys \ 1.0 \ bin y compruebe si tiene gcc.exe allí. Si gcc.exe no está allí, entonces debe ejecutar C: /MinGW/bin/mingw-get.exe e instalar gcc desde MSYS.

Después de eso, funciona bien para mí

Tuve el mismo problema. Y en mi caso, la solución fue bastante simple. El truco es simplemente agregar el “.exe” a la ruta de comstackción. Entonces, en lugar de:

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

Debería ser

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

Lo mismo aplica para g ++.