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


105

최신 버전의 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


컴파일러를 사용하는 Visual Studio 또는 gcc를 사용하는 Makefile에 대해 프로젝트를 구성 할 수 있습니다. 어떤 방법을 시도 했습니까?
Tsyvarev 2015 년

입력하는 cmake 명령은 무엇입니까?
bames53 2015 년

최신 CMake를 사용하고 있습니까? 어떤 발전기를 사용 했습니까? Visual Studio 2015 명령 프롬프트에서 명령을 실행 했습니까 (컴파일러 환경 변수가 설정 됨)?
drescherjm 2015 년

1
@ bames53 @Caio Fontes가 시도 할 해당 명령 줄에 추가하고 싶었습니다. cmake .. -G "Visual Studio 14 2015"또는 cmake .. -G "MSYS Makefiles"( gcc의미하는 경우 MinGW). 그리고 나는 그 질문을 많이 보았고 ( here , here , here ) SO에 대한 결합 된 / 튜토리얼 답변을 놓치고 있다고 생각합니다.
Florian

답변:


97

그 오류 메시지

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


1
참고로 cmake 문서 링크 중 일부는 CMake의 정말 오래된 버전을 가리 킵니다. 버전 선택기를 사용하여 컴퓨터에있는 버전과 일치하는 것을 잊지 마십시오 (예 : 당신은 필요합니다).
jrh

41

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

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

21

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

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

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

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

여기에 이미지 설명 입력


13

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 ++ 구성 요소를 다운로드하라는 메시지가 표시됩니다.



5

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

1
이것은 나를 위해 일했습니다. 필요한 패키지를 설치하기 위해 C ++ 프로젝트를 수동으로 생성하는 것이 트릭이었습니다.
Melaz

5

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

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


4

나 에게이 문제는 Windows에서 프로젝트를 더 얕은 상위 디렉토리로 옮겼을 때 사라졌습니다.

C:\Users\spenc\Desktop\MyProjectDirectory

대신에

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

문제의 원인은 MSBuild에 파일 경로 길이 제한 이 260 자로 제한 되어 있다는 것입니다. 이로 인해 CMake가 호출 된 프로젝트를 빌드하기 위해 수행하는 기본 컴파일러 테스트 CompilerIdCXX.vcxproj가 오류와 함께 실패합니다.

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

파일 경로의 길이가 예를 들어

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

MAX_PATH 제한을 초과합니다.

그러면 CMake는 CXX 컴파일러가 없다고 결론을 내립니다.


2

올바른 버전의 Visual Studio를 선택했는지 확인하십시오. Visual Studio 2015는 실제로 Visual Studio 14이고 비슷하게 Visual Studio 2012는 Visual Studio 11이기 때문에보기보다 까다 롭습니다. 2015 년을 설치했을 때 실제로 Visual Studio 2017 인 Visual Studio 15를 잘못 선택했습니다.



1

또한 sudo 사용자이고 작업중인 디렉토리에 대한 읽기 / 쓰기 액세스 권한이 있는지 확인할 수도 있습니다. OS X에서 비슷한 문제가 있었는데 sudo 모드로 들어가는 것만으로도 고쳐졌습니다.


1

미래에 나와 같은 사람이 도움이 될 경우를 대비하여 :

VS 2017로 WebKit을 빌드하는 동안 3 개의 64 비트 컴퓨터 (Win7, Windows 8.1 VM 및 WIn 8.1 랩톱)에서 24 시간 동안이 문제가 발생했습니다.

여기서 간단한 문제는 VC ++ 컴파일러 (예 : cl.exe 및 종속 DLL)가 CMake에 표시되지 않는다는 것입니다. 단순한. 이러한 바이너리가 포함 된 VC ++ 폴더를 CMake 및 작업 명령 프롬프트 (명령 프롬프트에서 Cmake를 실행하는 경우)에 표시하면 짜잔! (위에서 다른 사람이 제기 한 핵심 사항 외에도)

어쨌든 모든 종류의 수정 후-이 많은 포럼에 게시 된대로-PATH 변수의 내용이 여러 Visual Studio BIN 경로 등으로 복잡하지 않도록하는 것이 간단하다는 것을 발견했습니다. 대신 다음을 가리 킵니다.

a) 컴파일러의 위치 (예 : 선호하는 Visual Studio 버전의 cl.exe ), 내 경우 (64 비트 플랫폼을 대상으로하고 64 비트 호스트에서 개발) : C : \ Program Files (x86 ) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64

b) 그리고 또한 (cl.exe가 종속되어있는) 종속 DLL을 포함하는 폴더 : api-ms-win-crt-runtime-l1-1-0.dll- 내 컴퓨터에서 다음과 같습니다.

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

이 두 디렉토리는 단순화 된 CUSTOM 시스템 경로 변수 (관리자 권한이있는 명령 프롬프트에서 작동)에 추가되어 "CMAKE_C_COMPILER를 찾을 수 없음"및 "CMAKE_CXX_COMPILER를 찾을 수 없음"을 제거했습니다. 오류.

누군가에게 도움이되기를 바랍니다.


1

CMake의 Xcode 생성기 를 사용할 때 ccache 가 활성화 된 경우보고 된 오류가 정확히 발생 합니다. ccache를 비활성화하면 문제가 해결되었습니다. 아래에서는 MacOS에서 작동하지만 다른 플랫폼에서도 유사하게 작동하는 수정 / 검사를 제시합니다.

분명히 여기 에 설명 된대로 CMake의 Xcode 생성기 (및 기타)를 ccache와 함께 사용할 수도 있습니다 . 그러나 나는 그것을 스스로 시도하지 않았습니다.

# 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>

1
"xcode-select -p"의 출력이 내 Xcode 설치를 가리키는 지 확인하여 동일한 문제를 해결할 수있었습니다. 제 경우에는 Xcode를 설치하고 "xcode-select -r"을 실행하는 것으로 충분했습니다.
TomTasche

0

Visual Studio 2015 업데이트 2를 Visual Studio 2015 업데이트 3으로 업데이트했고 내 문제가 해결되었습니다.


이 솔루션은 Windows OS 업데이트를 푸시 한 후 제 직장에서 필요했습니다. 오류를 수정하기 위해이 페이지의 솔루션 중 2 개 이상을 사용했습니다. 오류는 여러 조건에서 발생할 수 있으므로 여러 가지 있지만 실행 가능한 답변이 있습니다.
Natalie Cottrill

0

No CMAKE_CXX_COMPILER could be found.명령 줄에서 CMake를 실행하는 동안 cmake-gui ( ) 와 동일한 문제가 발생 했습니다. 항목을 수동으로 추가 한 후

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

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

나를 위해 일한 PATH 환경 변수에.


0

나를 위해 그냥 다음 Visual Studio와 함께 제공하고, 개발자 명령 프롬프트 사용하는 일 cdyour/jcef/dir하고 실행을cmake -G "Visual Studio 14 Win64" ..


0

나는 같은 문제가 있었다.

내 컴퓨터에 dlib를 설치하려고했는데이 오류가 발생했습니다. 질문에 언급 된 튜토리얼은 Visual Studio 2017을 다운로드하는 것으로 이어집니다. VS 2017을 제거하고 VS 2015를 설치하여이 문제를 해결했습니다.

이 stackoverflow 스레드를 통해 VS 2015를 설치할 수 있습니다 .Visual Studio Community Edition 2015 (2017 아님)를 다운로드하는 방법


0

이 질문이 Visual Studio 2015에 관한 것임을 알고 있습니다. 저는 Visual Studio 2017에서이 문제에 직면했습니다. Google에서 검색했을 때이 페이지에 도달했습니다. 처음 2,3 답변을 살펴본 후 이것이 vc ++ 설치의 문제라는 것을 깨달았습니다. "C ++를 사용한 데스크탑 개발"워크로드를 설치하면 문제가 해결되었습니다.

C ++를 사용한 데스크톱 개발


0

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에서 선택적으로 제거 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.