user2022955
user2022955

Reputation: 351

CMake configuring fails. "cl.exe is not able to compile a simple test program"

I am trying to build a solution for MSVC++2010 using CMake. Since I installed Visual Studio 2012 that does not work anymore. CMake comes with the following error message: "The C compiler "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/cl.exe" is not able to compile a simple test program."

While searching a solution for my problem I found this topic (Cmake is Unable to Configure Project for Visual Studios 10 amd64) which though adresses my problem but the solution doesn't work for me.

Any help would be much appreciated.

Upvotes: 34

Views: 57575

Answers (7)

Chris87
Chris87

Reputation: 43

I got the same error because the path of some files of my project was too long. Accordingly, the solution was to move the project to a different location resulting in a shorter path.

Upvotes: 0

In order to use Microsoft Visual C++ compiler & linker on a shell, you’ve got to set some specific environmental variables, PATH, INCLUDE, and LIB.

Upvotes: 0

hab
hab

Reputation: 627

For Visual Studio 2017 and using cmake, I was getting the below error message

-- Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.18363.
-- The C compiler identification is MSVC 19.14.26433.0
-- The CXX compiler identification is MSVC 19.14.26433.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe - broken
CMake Error at C:/Program Files/CMake/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:66 (message):
  The C compiler

    "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe"

  is not able to compile a simple test program.

And I resolved the issue by setting the build environment by running vcvars140.bat script (as shown below).

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\vsdevcmd\ext\vcvars> .\vcvars140.bat 

Upvotes: 0

Martin Gao
Martin Gao

Reputation: 69

I encounter the excatly same problem. I solved by add a command before cmake

call "C:/Program Files (x86)/VC/vcvarsall.bat" amd64

The path of vcvarsall.bat and the architecture maybe different on your computer.

According to Usage of vcvarsall.bat, this command is to set up proper environment variable for command-line compilation.

Upvotes: 2

Zheng Size
Zheng Size

Reputation: 87

I have met this problem, and I fixed by this way. You should run cmake in a console, command like

>vcvars32  (to set some system vars, C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvar32.bat)

>cmake .. -G"NMake Makefiles" (.. is your code folder) 

>nmake  (It will work well!)

You should do this jod in one console, don't open another.

Upvotes: 7

pyan
pyan

Reputation: 3707

I had the same problem. The above solution didn't work out for me. My problem was solved after looking into this post.

First, check if you have .NET 4.5 on your system. If you do, that is very likely causing the problem. Try either upgrading to VS2010 SP1 or downgrade .NET to 4.0

CAUSES:

This error appears because you have installed Visual C++ 2012 after you have actually installed Visual C++ 2010 in your system; another cause is because .net Framework 4.5 replace .net Framework 4.0; .net Framework corrupted files;

HOW TO SOLVE

Uninstall .NET Framework 4.5 from your system; then download .NET Framework 4.0 and install it; this should fix your problem;

Upvotes: 11

Adi Shavit
Adi Shavit

Reputation: 17275

I had the same problem on Win7.
What worked for me is what @Andre suggested in the comment:

  1. Right-Click->Properties on cl.exe in your VS install directory (the exact path appears in the CMake error);
  2. Choose the Compatibility Tab;
  3. Check "Run this program as administrator" in the "Privilege Level" box.

Upvotes: 14

Related Questions