I am trying to run CMake on Windows, and I get the following error:
-- The C compiler identification is unknown
CMake Error at CMakeLists.txt:3 (PROJECT):
The CMAKE_C_COMPILER:
cl
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C++, cmake must be run from a shell
that can use the compiler cl from the command line. This environment is
unable to invoke the cl compiler. To fix this problem, run cmake from the
Visual Studio Command Prompt (vcvarsall.bat).
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
However my "CC" environment variable is set!
>>echo %CC%
C:\Anaconda2\MinGW\x86_64-w64-mingw32\bin\gcc.exe
Because CMake's error message is misleading here, I think it warrants a little more detailed answer.
In short, you ran into a chicken-and-egg kind of a problem.
CMake's compiler detection is mighty, but since - during the first try -
-G
PATH
environmentCC
environment variable defined with the full path to a compilerIt was defaulting to
nmake
.Now here comes the problem: it does remember your implicit generator/compiler choice in it's variable cache (see
CMAKE_GENERATOR
inCMakeCache.txt
). What is a very useful feature, if you have multiple compilers installed.But if you then declare the
CC
environment variable - as the error message suggests - it's too late since your generator's choice was remembered in the first try.I see two possible ways out of this:
cmake.exe -G "MinGW Makefiles" ..
(as the answer linked by @Guillaume suggests)CMakeCache.txt
) and docmake.exe ..
after you added your compiler'sbin
folder to yourPATH
environment.References
How was your cmake installed? If you installed it using cygwin, now try the latest windows version from cmake official site and set the PATH variable to make sure the right cmake version is used. It worked for me, hope it help you too.