최신 버전의 aseprite를 컴파일하기 위해 CMake로 Visual Studio 솔루션을 만들려고하는데 CMake는 다음을 계속 제공합니다.
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
이미 GCC를 다운로드했으며 Visual Studio 2015를 사용하고 있습니다.
이 튜토리얼을 따르고 있습니다.
최신 버전의 aseprite를 컴파일하기 위해 CMake로 Visual Studio 솔루션을 만들려고하는데 CMake는 다음을 계속 제공합니다.
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
이미 GCC를 다운로드했으며 Visual Studio 2015를 사용하고 있습니다.
이 튜토리얼을 따르고 있습니다.
답변:
그 오류 메시지
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에 대한 내 경험 중 일부입니다.
전제 조건
예를 들어 소스 트리의 하위 디렉토리와 같은 깨끗한 빌드 디렉토리가 있습니다 (CMake가 마지막 시도에서 캐시를 수행하기 때문에)
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
배쉬 쉘
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
명령 셸이 새로 생성 된 바이너리 출력 디렉토리를 가리키는 지 확인합니다.
시도 할 수있는 /해야 할 일반적인 사항
CMake가 기본 컴파일러를 찾고 실행할 수 있습니까? 발전기를주지 않고 실행
> cmake ..
-- Building for: Visual Studio 14 2015
...
사용할 발전기를 올바르게 결정했다면 완벽합니다. Visual Studio 14 2015
실제로 실패한 것은 무엇입니까?
이전 빌드 출력 디렉토리에서 CMakeFiles\CMakeError.log
이해하기 쉬운 오류 메시지를 보거나 CMakeFiles\[Version]\CompilerIdC
| 에서 생성 된 테스트 프로젝트를 열고 / 컴파일하십시오. CompilerIdCXX
명령 줄에서 직접 (오류 로그에 있음).
CMake가 Visual Studio를 찾을 수 없습니다.
올바른 생성기 버전 을 선택하십시오 .
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
그래도 도움이되지 않으면 먼저 Visual Studio 환경 변수를 설정해보십시오 (경로가 다를 수 있음).
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
또는 / / Developer Command Prompt for VS2015
아래의 Windows 시작 메뉴 에서 바로 가기 를 사용하십시오 (힌트를 위해 @Antwane 에게 감사드립니다 ).All Programs
Visual Studio 2015
Visual 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)
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 환경 변수를 설정하는 방법 참조 ) 다시 시도하십시오.
그래도 작동하지 않는 경우 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-make
MinGW와 함께 배포 된 프로그램 을 사용해야합니다.
그래도 작동이 안되는? 이상 하네. 컴파일러가 있고 실행 권한이 있는지 확인하십시오 (위의 전제 조건 장 참조).
그렇지 않으면 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.exe
Windows에서 해당 변수를 설정할 수도 있습니다 . 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를 추가하면 문제가 해결되었습니다.
첨부 된 스크린 샷을 참조하십시오.
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
나 에게이 문제는 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 컴파일러가 없다고 결론을 내립니다.
여기에있는 솔루션 중 어느 것도 내 문제를 해결하지 못합니다. 범용 C 런타임 용 Windows 업데이트를 설치할 때만 가능합니다.
이제 CMake가 작동하고 Visual Studio에서 더 이상 링크가 중단되지 않습니다.
또한 sudo 사용자이고 작업중인 디렉토리에 대한 읽기 / 쓰기 액세스 권한이 있는지 확인할 수도 있습니다. OS X에서 비슷한 문제가 있었는데 sudo 모드로 들어가는 것만으로도 고쳐졌습니다.
미래에 나와 같은 사람이 도움이 될 경우를 대비하여 :
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를 찾을 수 없음"을 제거했습니다. 오류.
누군가에게 도움이되기를 바랍니다.
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>
Visual Studio 2015 업데이트 2를 Visual Studio 2015 업데이트 3으로 업데이트했고 내 문제가 해결되었습니다.
나는 같은 문제가 있었다.
내 컴퓨터에 dlib를 설치하려고했는데이 오류가 발생했습니다. 질문에 언급 된 튜토리얼은 Visual Studio 2017을 다운로드하는 것으로 이어집니다. VS 2017을 제거하고 VS 2015를 설치하여이 문제를 해결했습니다.
이 stackoverflow 스레드를 통해 VS 2015를 설치할 수 있습니다 .Visual Studio Community Edition 2015 (2017 아님)를 다운로드하는 방법
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에서 선택적으로 제거 할 수 있습니다.