cmake: problems specifying the compiler
You have to use four backslashes to get a literal backslash in a SET
:
SET(CMAKE_C_COMPILER C:\\\\MinGW\\\\bin\\\\gcc)
SET(CMAKE_CXX_COMPILER C:\\\\MinGW\\\\bin\\\\g++)
This applies whether or not you use quotes around the argument.
Since this is pretty ugly, it's probably better to use forward slashes:
SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)
Pietro
C++ software developer. Particularly interested in software for technical/scientific applications, also in a research and development environment, following the full lifecycle of projects where possible. Interested in Standard C++, Boost, GPGPU, OpenCL, (spiking/convolutional/biological) neural networks, genetic algorithms, databases, ... and a few more things.
Updated on October 25, 2020Comments
-
Pietro over 3 years
I have a problem with this CMakeLists.txt file:
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)
Calling cmake with:
cmake -G "MinGW Makefiles"
I get:
c:\cmake_test>cmake -G "MinGW Makefiles" . -- The C compiler identification is GNU 4.6.1 CMake Warning (dev) at CMakeFiles/CMakeCCompiler.cmake:1 (SET): Syntax error in cmake code at C:/cmake_test/CMakeFiles/CMakeCCompiler.cmake:1 when parsing string C:\MinGW\bin\gcc Invalid escape sequence \M Policy CMP0010 is not set: Bad variable reference syntax is an error. Run "cmake --help-policy CMP0010" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Call Stack (most recent call first): CMakeLists.txt:12 (project) This warning is for project developers. Use -Wno-dev to suppress it. -- The CXX compiler identification is GNU 4.6.1 CMake Warning (dev) at CMakeFiles/CMakeCXXCompiler.cmake:1 (SET): Syntax error in cmake code at C:/cmake_test/CMakeFiles/CMakeCXXCompiler.cmake:1 when parsing string C:\MinGW\bin\g++ Invalid escape sequence \M Policy CMP0010 is not set: Bad variable reference syntax is an error. Run "cmake --help-policy CMP0010" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Call Stack (most recent call first): CMakeLists.txt:12 (project) This warning is for project developers. Use -Wno-dev to suppress it. -- Check for working C compiler: C:\MinGW\bin\gcc CMake Error at C:/cmake_test/CMakeFiles/CMakeCCompiler.cmake:1 (SET): Syntax error in cmake code at C:/cmake_test/CMakeFiles/CMakeCCompiler.cmake:1 when parsing string C:\MinGW\bin\gcc Invalid escape sequence \M Call Stack (most recent call first): CMakeLists.txt:2 (PROJECT) CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: Internal CMake error, TryCompile configure of cmake failed 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!
I also tried with:
C:\MinGW\bin\g++ /C/MinGW/bin/g++
with the same result. Double quotes have not been helpful, either.
Of course, the compiler is present in the specified directory.
Thank you for any hint.
-
Pietro over 11 yearsIt is the first time I see four backslashes together! They should add it to the documentation...
-
DLRdave over 11 yearsWhen setting a CMake variable that is a path to a directory or file name, use "/" as the separator character.
-
DLRdave over 11 yearsHowever, you should avoid setting the _COMPILER variables directly in the CMakeLists.txt file. See my answer to your "(2)" version of this question: stackoverflow.com/a/13089688/236192