Bu hata mesajları
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".
veya
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'in basit bir test programı derlemek için C / CXX derleyicinizi bulamadığı anlamına gelir (CMake'nin derleme ortamınızı tespit ederken denediği ilk şeylerden biri).
Sorununuzu bulma adımları, oluşturmak istediğiniz derleme ortamına bağlıdır. Aşağıdaki eğitimler, Stack Overflow'da yanıtların bir derlemesidir ve Microsoft Windows 7/8/10 ve Ubuntu 14.04'te CMake ile ilgili kendi deneyimlerimden bazılarıdır.
Ön koşullar
- Derleyiciyi / IDE'yi kurdunuz ve bir kez başka herhangi bir programı derleyebildiniz (doğrudan CMake olmadan)
- En son CMake sürümüne sahipsiniz
- CMake'in oluşturma ortamınızı oluşturmasını istediğiniz sürücüde erişim haklarınız var
Temiz bir yapı dizininiz var (çünkü CMake son denemeden itibaren her şeyi önbelleğe alıyor) örneğin, kaynak ağacınızın alt dizini olarak
Windows cmd.exe
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Bash kabuğu
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
ve komut kabuğunuzun yeni oluşturduğunuz ikili çıktı dizinini gösterdiğinden emin olun.
Denemeniz / denemeniz gereken genel şeyler
CMake herhangi bir / varsayılan derleyicinizle bulup çalıştırabilir mi? Jeneratör vermeden koş
> cmake ..
-- Building for: Visual Studio 14 2015
...
Jeneratörü doğru şekilde kullanması için mükemmel - buradaki gibi Visual Studio 14 2015
Gerçekte başarısız olan neydi?
Önceki derleme çıktı dizininde CMakeFiles\CMakeError.log
, sizin için anlamlı olan herhangi bir hata mesajına bakın veya CMakeFiles\[Version]\CompilerIdC
| adresinde oluşturulan test projesini açmaya / derlemeye çalışın. CompilerIdCXX
doğrudan komut satırından (hata günlüğünde olduğu gibi).
CMake, Visual Studio'yu bulamıyor
Doğru jeneratör sürümünü seçmeyi deneyin :
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
Bu işe yaramazsa, önce Visual Studio ortam değişkenlerini ayarlamayı deneyin (yol değişebilir):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
veya Developer Command Prompt for VS2015
Windows Başlat Menünüzde All Programs
/ Visual Studio 2015
/ altındaki kısayolu kullanınVisual Studio Tools
( ipucu için @Antwane'e teşekkürler ).
Arka plan : CMake, tüm Visual Studio sürümlerini ve çeşitlerini (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate vb.) Destekler. Derleyicinin konumunu belirlemek için, kayıt defterini (örn. At HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), sistem ortam değişkenlerini ve - diğerlerinden hiçbiri bir şey bulamadıysa - derleyiciyi aramanın bir kombinasyonunu kullanır .
CMake GCC'yi bulamıyor (MinGW / MSys)
MSys bash
kabuğunu ile başlatırsınız ve msys.bat
doğrudan aramaya çalışırsınızgcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
Burada gcc
, çalışmak için herhangi bir parametre vermediğimi buldu ve şikayet ediyor.
Yani aşağıdakiler çalışmalıdır:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
GCC bulunamadıysa export PATH=...
, derleyicilerinizin yolunu eklemek için arama yapın (bkz . CMake komut dosyasında PATH ortam değişkeni nasıl ayarlanır? ) Ve tekrar deneyin.
Hala çalışmıyorsa, CXX
derleyici yolunu doğrudan dışa aktararak ayarlamayı deneyin (yol değişebilir)
$ 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
Daha fazla ayrıntı için bkz . CMake için yeni GCC yolu belirleme
Not : "MinGW Makefiles" oluşturucusunu kullanırken mingw32-make
MinGW ile dağıtılan programı kullanmanız gerekir.
Hala çalışmıyor? Bu tuhaf. Lütfen derleyicinin orada olduğundan ve çalıştırılabilir haklara sahip olduğundan emin olun (ayrıca yukarıdaki ön koşullar bölümüne bakın).
Aksi takdirde CMake'nin son çare, herhangi bir derleyici aramasını denememek ve CMake'nin dahili değişkenlerini doğrudan şu şekilde ayarlamaktır:
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
Daha fazla ayrıntı için bkz.Cmake, -D CMAKE_CXX_COMPILER = g ++ ve Cmake hata ayarı derleyicisini kabul etmez
Alternatif olarak bu değişkenler cmake-gui.exe
Windows üzerinden de ayarlanabilir . Bkz. Cmake derleyiciyi bulamıyor
Arka plan : Visual Studio ile hemen hemen aynı. CMake her türlü GCC lezzetini destekler. Ortam değişkenlerini (CC, CXX, vb.) Araştırır veya sadece derleyiciyi aramaya çalışır. (Buna ek olarak, herhangi bir ön ekleri algılar derleme çapraz ) ve çalışır GNU derleyicisi toolchain tüm binutils eklemek için ( ar
, ranlib
, strip
, ld
, nm
, objdump
, ve objcopy
).