38

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
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
João Abrantes
  • 4,772
  • 4
  • 35
  • 71
  • 8
    Possible duplicate of [Running CMake on Windows](http://stackoverflow.com/questions/4101456/running-cmake-on-windows) – Guillaume Mar 08 '16 at 14:15
  • Can you please give the `cmake.exe ...` call you were using? And one guess would be that `C:\Anaconda2\MinGW\x86_64-w64-mingw32\bin` is not part of your `PATH` environment variable (as the error message suggests). See also [here](http://stackoverflow.com/questions/32801638/cmake-error-at-cmakelists-txt30-project-no-cmake-c-compiler-could-be-found). – Florian Mar 08 '16 at 19:56
  • @Florian just the normal call: "cmake ..". Yes it's not part of my `PATH` the error says: 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." So my CC points to the full path and not just to the name.. there shouldn't be any problem – João Abrantes Mar 09 '16 at 13:26
  • @JoãoAbrantes You have to also do add MinGW binary directory to `PATH` because `gcc.exe` does depend on DLLs in that directory. If I view my `gcc.exe` in [the Dependency Walker application](http://www.dependencywalker.com/) I get e.g. a reference to `LIBWINPTHREAD-1.DLL`. – Florian Mar 09 '16 at 14:26
  • @Florian Ok I have now added the MinGW binary directory to PATH. However the error remains :( – João Abrantes Mar 09 '16 at 15:45

3 Answers3

27

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 -

  • you didn't give any explicit generator to use with -G
  • it couldn't find a Visual Studio installed
  • it couldn't find any C/C++ compiler in your PATH environment
  • it couldn't find a CC environment variable defined with the full path to a compiler

It 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 in CMakeCache.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:

  1. Overrule the generator choice by given the right one with cmake.exe -G "MinGW Makefiles" .. (as the answer linked by @Guillaume suggests)
  2. Delete your project's binary output directory (including CMakeCache.txt) and do cmake.exe .. after you added your compiler's bin folder to your PATH environment.

References

starball
  • 20,030
  • 7
  • 43
  • 238
Florian
  • 39,996
  • 9
  • 133
  • 149
  • 3
    I added the path C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64 and it worked. cl was not added tot the path – c3cris Sep 30 '18 at 02:22
2

I use cmake -G "MinGW Makefiles" . instead of cmake . It worked!

Lucky Ning
  • 81
  • 7
0

I came across the same problem and what worked for me was:

  1. I installed Visual Studio (following this tutorial ).
  • You will need to install the 2019 version (it is 2021 now) -- there are a few extra things but it's fine. The entire thing is about 6.7 G.
  • You don't really need the pip install dlib part and the rest.
  1. On the basis of the above tutorial, I added this path to the environment variable ( C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\bin\Hostx64\x64. The method of adding paths to the environment variable can also be found in the above tutorial.)