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


답변

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

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

답변

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

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

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

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


답변

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가 찾을 수 없었습니다. 컴파일러.

Visual Studio 2015 GUI ( C : \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) 에서 수동으로 C ++ 프로젝트를 만들려고했는데 프로젝트 를 만드는 동안 C ++를 다운로드하라는 메시지가 표시되었습니다. 및 관련 패키지.

필요한 패키지를 다운로드 한 후 vcvarsall.bat & Cmake가 컴파일러를 찾고 다음 로그로 성공적으로 실행되었음을 알 수 있습니다.

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

답변

CMake에서 동일한 오류가 발생했습니다. 필자의 경우에는 Visual Studio 컴파일러를 선택해야하는 초기 CMake 대화 상자에서 잘못된 Visual Studio 버전을 사용했습니다.

그런 다음 “Visual Studio 11 2012″로 변경하고 모든 것이 작동했습니다. (PC에 Visual Studio Ultimate 2012 버전이 있습니다). 일반적으로 초기 CMake 구성 대화 상자에서 이전 버전의 Visual Studio 버전을 입력 해보십시오.