programing

CMakeLists.txt : 30 (프로젝트)의 CMake 오류 : CMAKE_C_COMPILER를 찾을 수 없습니다.

nasanasas 2020. 9. 14. 21:15
반응형

CMakeLists.txt : 30 (프로젝트)의 CMake 오류 : CMAKE_C_COMPILER를 찾을 수 없습니다.


최신 버전의 aseprite를 컴파일하기 위해 CMake로 Visual Studio 솔루션을 만들려고하는데 CMake는 다음을 계속 제공합니다.

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

이미 GCC를 다운로드했으며 Visual Studio 2015를 사용하고 있습니다.

이 튜토리얼을 따르고 있습니다.

https://github.com/aseprite/aseprite/blob/master/INSTALL.md


그 오류 메시지

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".

또는

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!

CMake가 간단한 테스트 프로그램을 컴파일하기 위해 C / CXX 컴파일러를 찾을 수 없음을 의미합니다 (CMake가 빌드 환경을 감지하는 동안 시도하는 첫 번째 작업 중 하나).

문제를 찾는 단계는 생성하려는 빌드 환경에 따라 다릅니다. 다음 자습서는 Stack Overflow에 대한 답변 모음과 Microsoft Windows 7/8/10 및 Ubuntu 14.04에서 CMake에 대한 내 경험 중 일부입니다.

전제 조건

  • 컴파일러 / IDE를 설치했으며 다른 프로그램을 한 번 컴파일 할 수있었습니다 (CMake없이 직접).
  • 최신 CMake 버전이 있습니다.
  • CMake가 빌드 환경을 생성하도록하려는 드라이브에 대한 액세스 권한이 있습니다.
  • 예를 들어 소스 트리의 하위 디렉토리와 같은 깨끗한 빌드 디렉토리가 있습니다 (CMake가 마지막 시도에서 캐시를 수행하기 때문에)

    Windows cmd.exe

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

    배쉬 쉘

    $ rm -rf MSYS
    $ mkdir MSYS
    $ cd MSYS
    

    명령 셸이 새로 생성 된 바이너리 출력 디렉토리를 가리키는 지 확인합니다.

시도 할 수있는 /해야 할 일반적인 사항

  1. CMake가 기본 컴파일러를 찾고 실행할 수 있습니까? 발전기를주지 않고 실행

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

    사용할 발전기를 올바르게 결정했다면 완벽합니다. Visual Studio 14 2015

  2. 실제로 실패한 것은 무엇입니까?

    이전 빌드 출력 디렉토리에서 CMakeFiles\CMakeError.log이해하기 쉬운 오류 메시지를 보거나 CMakeFiles\[Version]\CompilerIdC| 에서 생성 된 테스트 프로젝트를 열고 / 컴파일하십시오. CompilerIdCXX명령 줄에서 직접 (오류 로그에 있음).

CMake가 Visual Studio를 찾을 수 없습니다.

  1. 올바른 생성기 버전 을 선택하십시오 .

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. 그래도 도움이되지 않으면 먼저 Visual Studio 환경 변수를 설정해보십시오 (경로가 다를 수 있음).

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

    또는 / / Developer Command Prompt for VS2015아래의 Windows 시작 메뉴 에서 바로 가기 를 사용하십시오 (힌트를 위해 @Antwane 에게 감사드립니다 ).All ProgramsVisual Studio 2015Visual Studio Tools

배경 : CMake는 모든 Visual Studio 릴리스 및 버전 (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate 등)을 지원합니다. 컴파일러의 위치를 ​​결정하기 위해 레지스트리 (예 : at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir), 시스템 환경 변수 를 검색하는 조합을 사용 하고-다른 것들이 아무것도 찾지 못한 경우-컴파일러를 호출하려고 시도합니다.

CMake가 GCC를 찾을 수 없음 (MinGW / MSys)

  1. MSys bash셸을 시작하고 msys.bat직접 호출하십시오.gcc

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

    여기 gcc에서 내가 작업 할 매개 변수를주지 않았다고 불평하고 있습니다.

    따라서 다음이 작동합니다.

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

    GCC를 찾을 수없는 경우 export PATH=...컴파일러 경로를 추가하도록 호출 하고 ( CMake 스크립트에서 PATH 환경 변수를 설정하는 방법 참조 ) 다시 시도하십시오.

  2. 그래도 작동하지 않는 경우 CXX내보내기를 통해 컴파일러 경로를 직접 설정해보십시오 (경로가 다를 수 있음).

    $ 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
    

    자세한 내용은 CMake에 대한 새 GCC 경로를 지정하는 방법을 참조하세요.

    참고 : "MinGW Makefiles"생성기를 사용할 때는 mingw32-makeMinGW와 함께 배포 프로그램 을 사용해야합니다.

  3. 그래도 작동이 안되는? 이상 하네. 컴파일러가 있고 실행 권한이 있는지 확인하십시오 (위의 전제 조건 장 참조).

    그렇지 않으면 CMake의 마지막 수단은 컴파일러 자체 검색을 시도하지 않고 직접 CMake의 내부 변수를 설정하는 것입니다.

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

    자세한 내용은 Cmake가 -D CMAKE_CXX_COMPILER = g ++Cmake 오류 설정 컴파일러를 따르지 않음을 참조하십시오.

    또는 cmake-gui.exeWindows에서 해당 변수를 설정할 수도 있습니다 . Cmake에서 컴파일러를 찾을 수 없음을 참조하십시오.

배경 : Visual Studio와 거의 동일합니다. CMake는 모든 종류의 GCC 특징을 지원합니다. 환경 변수 (CC, CXX 등)를 검색하거나 단순히 컴파일러 호출을 시도합니다. (때 또한 그것이 어떤 접두사를 감지 컴파일 크로스 )와 시도는 GNU 컴파일러 툴체인의 모든 바이너리 유틸리티에 추가 ( ar, ranlib, strip, ld, nm, objdump, 및 objcopy).


Visual Studio 15 2017을 설치 한 후에 이런 일이 발생했습니다.

Visual Studio 14 2015 용 C ++ 컴파일러는 문제가 아닙니다. Windows 10 SDK의 문제인 것 같습니다.

Visual Studio 14 2015에 Windows 10 SDK를 추가하면 문제가 해결되었습니다.

첨부 된 스크린 샷을 참조하십시오.

여기에 이미지 설명 입력


Ubuntu의 경우 아래 항목을 설치하십시오.

sudo apt-get update && sudo apt-get install build-essential

CMake로 작업 할 때도이 오류가 발생했습니다.

No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.

Visual Studio 2015 의 MSDN 라이브러리 문서 Visual C ++ 의 '경고'상자에서 필요한 도움을 받았습니다.

Visual Studio 2015는 기본적으로 설치된 C ++와 함께 제공되지 않습니다. 따라서 새 C ++ 프로젝트를 만들면 필요한 C ++ 구성 요소를 다운로드하라는 메시지가 표시됩니다.


이것은 Ubuntu 17.10 (Artful Aardvark) 에서 나를 위해 작동합니다 .

apt-get update
apt-get install build-essential

libgit2-0.23.4를 빌드하는 동안이 문제가 발생했습니다. 저에게 문제는 C ++ 컴파일러 및 관련 패키지가 VS2015와 함께 설치되지 않았기 때문에 "C : \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat" 파일이 누락되었고 Cmake가 찾을 수 없었습니다. 컴파일러.

I tried manually creating a C++ project in the Visual Studio 2015 GUI (C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe) and while creating the project, I got a prompt to download the C++ & related packages.

After downloading required packages, I could see vcvarsall.bat & Cmake was able to find the compiler & executed successfully with following log:

C:\Users\aksmahaj\Documents\MyLab\fritzing\libgit2\build64>cmake ..
-- Building for: Visual Studio 14 2015
-- The C compiler identification is MSVC 19.0.24210.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual        
Studio 14.0/VC/bin/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual  
Studio 14.0/VC/bin/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
-- zlib was not found; using bundled 3rd-party sources.
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of 
the default search path.
-- Looking for futimens
-- Looking for futimens - not found
-- Looking for qsort_r
-- Looking for qsort_r - not found
-- Looking for qsort_s
-- Looking for qsort_s - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - not found
-- Found PythonInterp: C:/csvn/Python25/python.exe (found version "2.7.1")
-- Configuring done
-- Generating done
-- Build files have been written to:    
C:/Users/aksmahaj/Documents/MyLab/fritzing/libgit2/build64

For me, this problem went away on Windows when I moved my project to a shallower parent directory, i.e. to:

C:\Users\spenc\Desktop\MyProjectDirectory

instead of

C:\Users\spenc\Desktop\...\MyProjectDirectory.

I think the source of the problem was that MSBuild has a file path length restriction to 260 characters. This causes the basic compiler test CMake performs to build a project called CompilerIdCXX.vcxproj to fail with the error:

C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'

because the length of the file's path e.g.

C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp

exceeds the MAX_PATH restriction.

CMake then concludes there is no CXX compiler.


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.


Make sure you have selected the correct version of Visual Studio. This is trickier than it seems because Visual Studio 2015 is actually Visual Studio 14, and similarly Visual Studio 2012 is Visual Studio 11. I had incorrectly selected Visual Studio 15 which is actually Visual Studio 2017, when I had 2015 installed.


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


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.


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.


I get exactly the reported error if ccache is enabled, when using CMake's Xcode generator. Disabling ccache fixed the problem for me. Below I present a fix/check that works for MacOS, but should work similarly on other platforms.

Apparently, it is possible to use CMake's Xcode generator (and others) also in combination with ccache, as is described here. But I never tried it out myself.

# 1) To check if ccache is enabled:
echo $CC
echo $CXX
# This prints something like the following: 
#     ccache clang -Qunused-arguments -fcolor-diagnostics. 
# CC or CXX are typically set in the `.bashrc` or `.zshrc` file.

# 2) To disable ccache, use the following:
CC=clang
CXX=clang++

# 3) Then regenerate the cmake project
cmake -G Xcode <path/to/CMakeLists.txt>

I updated Visual Studio 2015 update 2 to Visual Studio 2015 update 3, and it solved my problem.


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.


For me it worked to use the Developer Command Prompt that comes with Visual Studio and then just cd to your/jcef/dir and run cmake -G "Visual Studio 14 Win64" ..


I had the same problem.

I was trying to install dlib on my machine and it gave me this error. The tutorial mentioned in the question leads to downloading visual studio 2017. I solved this by uninstalling VS 2017 and installing VS 2015

One can install VS 2015 via this stackoverflow thread : How to download Visual Studio Community Edition 2015 (not 2017)


I know this question is about visual studio 2015. I faced this issue with visual studio 2017. When searched on google I landed to this page. After looking at first 2,3 answers I realized this is the problem with vc++ installation. Installing the workload "Desktop development with c++" resolved the issue.

Desktop development with c++


ARM 용 C ++를 설치해야하는 ARM을 찾으면 Cmakelists.txt를 참조하십시오.

다음 패키지입니다.

ARM64 용 C ++ 유니버설 Windows 플랫폼 "필수 아님"

ARM 용 Visual C ++ 컴파일러 및 라이브러리 "필수 아님"

ARM64 용 Visual C ++ 컴파일러 및 라이브러리 "매우 필요함"

Required for finding Threads on ARM 
enable_language(C) 
enable_language(CXX)

그런 다음 문제

CMAKE_C_COMPILER를 찾을 수 없습니다.

CMAKE_CXX_COMPILER를 찾을 수 없습니다.

clang과 같은 c 컴파일러를 지정하지 않으면 사라질 수 있으며 clang을 설치하면 다른 방식으로 작동 할 수 있습니다.

ARM 용으로 컴파일하지 않는 경우 enable_language 앞에 #을 사용하여 cmakelists.txt에서 선택적으로 제거 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/32801638/cmake-error-at-cmakelists-txt30-project-no-cmake-c-compiler-could-be-found

반응형