CMake error at CMakeLists.txt:30 (project): No CMAKE_C_COMPILER could be found

后端 未结 19 2153
抹茶落季
抹茶落季 2020-11-22 12:57

I\'m trying make a Visual Studio solution with CMake to compile the latest version of aseprite and CMake keeps giving me the:

No CMAKE_C_COMPILER could be fo         


        
相关标签:
19条回答
  • 2020-11-22 13:49

    Just in case it helps any one like me in future:

    I have had this issue for 24 hours now, on 3 different 64-bit machines(Win7 , Windows 8.1 VM and WIn 8.1 laptop) - whilst trying to build WebKit with VS 2017.

    The simple issue here is that the VC++ compiler (i.e cl.exe and it's dependent DLLs) is not visible to CMake. Simple. By making the VC++ folders containing those binaries visible to CMake and your working command prompt(if you're running Cmake from a command prompt), voila! (In addition to key points raised by others , above)

    Anyway, after all kinds of fixes - as posted on these many forums- I discovered that it was SIMPLY a matter of ensuring that the PATH variable's contents are not cluttered with multiple Visual Studio BIN paths etc; and instead, points to :

    a) the location of your compiler (i.e. cl.exe for your preferred version of Visual Studio ), which in my case(targeting 64-bit platform, and developing on a 64-bit host) is: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64

    b) and in addition, the folder containing a dependent DLL called (which cl.exe is dependent on): api-ms-win-crt-runtime-l1-1-0.dll - which on my machine is:

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Remote Debugger\x64

    These two directories being added to a simplified and CUSTOM System Path variable(working under a Admin priviledged commmand prompt), eliminated my "No CMAKE_C_COMPILER could be found" and "No CMAKE_CXX_COMPILER could be found." errors.

    Hope it helps someone.

    0 讨论(0)
  • 2020-11-22 13:53

    I had the same errors with CMake. In my case, I have used the wrong Visual Studio version in the initial CMake dialog where we have to select the Visual Studio compiler.

    Then I changed it to "Visual Studio 11 2012" and things worked. (I have Visual Studio Ultimate 2012 version on my PC). In general, try to input an older version of Visual Studio version in the initial CMake configuration dialog.

    0 讨论(0)
  • 2020-11-22 13:53

    I had the same issue with cmake-gui (No CMAKE_CXX_COMPILER could be found.), while running CMake from the command line worked fine. After manually adding the entries

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

    to the PATH environment variable it worked for me.

    0 讨论(0)
  • 2020-11-22 13:55

    You can also make sure you are the sudo user and you have READ/WRITE access on the directory you are working. I had a similar problem on OS X, and I got it fixed just by entering in sudo mode.

    0 讨论(0)
  • 2020-11-22 13:56

    Those error messages

    CMake Error at ... (project):
        No CMAKE_C_COMPILER could be found.
    -- Configuring incomplete, errors occurred!
    See also ".../CMakeFiles/CMakeOutput.log".
    See also ".../CMakeFiles/CMakeError.log".
    

    or

    CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.
    Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
    ...
    -- Configuring incomplete, errors occurred!
    

    just mean that CMake was unable to find your C/CXX compiler to compile a simple test program (one of the first things CMake tries while detecting your build environment).

    The steps to find your problem are dependent on the build environment you want to generate. The following tutorials are a collection of answers here on Stack Overflow and some of my own experiences with CMake on Microsoft Windows 7/8/10 and Ubuntu 14.04.

    Preconditions

    • You have installed the compiler/IDE and it was able to once compile any other program (directly without CMake)
      • You e.g. may have the IDE, but may not have installed the compiler or supporting framework itself like described in Problems generating solution for VS 2017 with CMake or How do I tell CMake to use Clang on Windows?
    • You have the latest CMake version
    • You have access rights on the drive you want CMake to generate your build environment
    • You have a clean build directory (because CMake does cache things from the last try) e.g. as sub-directory of your source tree

      Windows cmd.exe

      > rmdir /s /q VS2015
      > mkdir VS2015
      > cd VS2015
      

      Bash shell

      $ rm -rf MSYS
      $ mkdir MSYS
      $ cd MSYS
      

      and make sure your command shell points to your newly created binary output directory.

    General things you can/should try

    1. Is CMake able find and run with any/your default compiler? Run without giving a generator

      > cmake ..
      -- Building for: Visual Studio 14 2015
      ...
      

      Perfect if it correctly determined the generator to use - like here Visual Studio 14 2015

    2. What was it that actually failed?

      In the previous build output directory look at CMakeFiles\CMakeError.log for any error message that make sense to you or try to open/compile the test project generated at CMakeFiles\[Version]\CompilerIdC|CompilerIdCXX directly from the command line (as found in the error log).

    CMake can't find Visual Studio

    1. Try to select the correct generator version:

      > cmake --help
      > cmake -G "Visual Studio 14 2015" ..
      
    2. If that doesn't help, try to set the Visual Studio environment variables first (the path could vary):

      > "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
      > cmake ..
      

      or use the Developer Command Prompt for VS2015 short-cut in your Windows Start Menu under All Programs/Visual Studio 2015/Visual Studio Tools (thanks at @Antwane for the hint).

    Background: CMake does support all Visual Studio releases and flavors (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, etc.). To determine the location of the compiler it uses a combination of searching the registry (e.g. at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), system environment variables and - if none of the others did come up with something - plainly try to call the compiler.

    CMake can't find GCC (MinGW/MSys)

    1. You start the MSys bash shell with msys.bat and just try to directly call gcc

      $ gcc
      gcc.exe: fatal error: no input files
      compilation terminated.
      

      Here it did find gcc and is complaining that I didn't gave it any parameters to work with.

      So the following should work:

      $ cmake -G "MSYS Makefiles" ..
      -- The CXX compiler identification is GNU 4.8.1
      ...
      $ make
      

      If GCC was not found call export PATH=... to add your compilers path (see How to set PATH environment variable in CMake script?) and try again.

    2. If it's still not working, try to set the CXX compiler path directly by exporting it (path may vary)

      $ export CC=/c/MinGW/bin/gcc.exe
      $ export CXX=/c/MinGW/bin/g++.exe
      $ cmake -G "MinGW Makefiles" ..
      -- The CXX compiler identification is GNU 4.8.1
      ...
      $ mingw32-make
      

      For more details see How to specify new GCC path for CMake

      Note: When using the "MinGW Makefiles" generator you have to use the mingw32-make program distributed with MinGW

    3. Still not working? That's weird. Please make sure that the compiler is there and it has executable rights (see also preconditions chapter above).

      Otherwise the last resort of CMake is to not try any compiler search itself and set CMake's internal variables directly by

      $ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
      

      For more details see Cmake doesn't honour -D CMAKE_CXX_COMPILER=g++ and Cmake error setting compiler

      Alternatively those variables can also be set via cmake-gui.exe on Windows. See Cmake cannot find compiler

    Background: Much the same as with Visual Studio. CMake supports all sorts of GCC flavors. It searches the environment variables (CC, CXX, etc.) or simply tries to call the compiler. In addition it will detect any prefixes (when cross-compiling) and tries to add it to all binutils of the GNU compiler toolchain (ar, ranlib, strip, ld, nm, objdump, and objcopy).

    0 讨论(0)
  • 2020-11-22 13:56

    None of the solutions here solves my problem - only when I install Windows Update for universal C runtime.

    Now CMake is working and no more link hangs from Visual Studio.

    Update for Universal C Runtime in Windows

    0 讨论(0)
提交回复
热议问题