CMakeLists.txt'de CMake hatası: 30 (proje): CMAKE_C_COMPILER bulunamadı


106

Aseprite'ın en son sürümünü derlemek için CMake ile bir Visual Studio çözümü yapmaya çalışıyorum ve CMake bana şu bilgileri veriyor:

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

GCC'yi zaten indirdim ve Visual Studio 2015 kullanıyorum .

Bu öğreticiyi takip ediyorum:

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


Projeyi derleyicisiyle Visual Studio için veya gcc ile Makefiles için yapılandırabilirsiniz. Hangi yöntemi denediniz?
Tsyvarev

Girdiğiniz cmake komutu nedir?
bames53

En son CMake'i kullanıyor musunuz? Hangi jeneratörü kullandın? Komutları Visual Studio 2015 komut isteminden çalıştırdınız mı (böylece derleyici ortam değişkenleri ayarlanmıştır)?
drescherjm

1
@ bames53 Hemen denemek @Caio Fontes'in için komut satırları karşılık gelen eklemek istedim: cmake .. -G "Visual Studio 14 2015"ya cmake .. -G "MSYS Makefiles"(eğer gccvasıtasıyla MinGW). Ve bu soruları çok gördüm ( burada , burada veya burada olduğu gibi ) ve SO konusunda birleştirilmiş / öğretici bir cevabı kaçırdığımızı düşünüyorum.
Florian

Yanıtlar:


97

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

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

  2. 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. CompilerIdCXXdoğrudan komut satırından (hata günlüğünde olduğu gibi).

CMake, Visual Studio'yu bulamıyor

  1. Doğru jeneratör sürümünü seçmeyi deneyin :

    > cmake --help
    > cmake -G "Visual Studio 14 2015" ..
    
  2. 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 VS2015Windows 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)

  1. MSys bashkabuğunu ile başlatırsınız ve msys.batdoğ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.

  2. Hala çalışmıyorsa, CXXderleyici 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-makeMinGW ile dağıtılan programı kullanmanız gerekir.

  3. 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.exeWindows ü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).


1
Bir uyarı olarak, bazı cmake dokümanları bağlantıları CMake'nin gerçekten eski bir sürümüne işaret ediyor, sürüm seçiciyi bilgisayarınızda sahip olduğunuz sürüme uyacak şekilde kullanmayı unutmayın (örneğin, listede daha yeni bir platform görmüyorsanız) ihtiyacınız var).
JRH

46

Ubuntu için lütfen aşağıdaki şeyleri kurun:

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

21

Bu, Visual Studio 15 2017'yi yükledikten sonra başıma geldi.

Visual Studio 14 2015 için C ++ derleyicisi sorun değildi. Windows 10 SDK ile ilgili bir sorun gibi görünüyordu.

Windows 10 SDK'larını Visual Studio 14 2015'e eklemek sorunu benim için çözdü.

Ekteki ekran görüntüsüne bakın.

Buraya resim açıklamasını girin


13

CMake ile çalışırken de şu hatayı yaşadım:

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

Visual Studio 2015'teki Visual C ++ MSDN kitaplığı makalesindeki 'uyarı' kutusu bana ihtiyacım olan yardımı verdi.

Visual Studio 2015, varsayılan olarak C ++ yüklü olarak gelmez. Bu nedenle, yeni bir C ++ projesi oluşturmak, gerekli C ++ bileşenlerini indirmenizi isteyecektir.



5

Libgit2-0.23.4'ü oluştururken bu sorunla karşılaştım. Benim için sorun, C ++ derleyicisinin ve ilgili paketlerin VS2015 ile yüklenmemiş olmasıydı, bu nedenle "C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat" dosyası eksikti ve Cmake bulamadı derleyici.

Visual Studio 2015 GUI'de ( C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) manuel olarak bir C ++ projesi oluşturmayı denedim ve projeyi oluştururken C ++ 'ı indirmem için bir uyarı aldım ve ilgili paketler.

Gerekli paketleri indirdikten sonra, vcvarsall.bat & Cmake'nin derleyiciyi bulabildiğini ve aşağıdaki log ile başarıyla yürütüldüğünü görebildim:

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
Bu benim için çalıştı. Gerekli paketleri kurmak için manuel olarak bir C ++ projesi oluşturmak hile yaptı.
Melaz

5

CMake ile aynı hataları yaşadım. Benim durumumda, Visual Studio derleyicisini seçmemiz gereken ilk CMake iletişim kutusunda yanlış Visual Studio sürümünü kullandım.

Sonra onu "Visual Studio 11 2012" olarak değiştirdim ve işler yolunda gitti. (Bilgisayarımda Visual Studio Ultimate 2012 sürümüm var). Genel olarak, ilk CMake yapılandırma iletişim kutusunda Visual Studio sürümünün eski bir sürümünü girmeyi deneyin.


4

Benim için, projemi daha sığ bir ana dizine taşıdığımda bu sorun Windows'ta ortadan kalktı, yani:

C:\Users\spenc\Desktop\MyProjectDirectory

onun yerine

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

Sanırım sorunun kaynağı, MSBuild'in 260 karakterle dosya yolu uzunluğu sınırlamasına sahip olmasıydı . Bu, CMake'nin CompilerIdCXX.vcxprojhata ile başarısız olmak için çağrılan bir proje oluşturmak için gerçekleştirdiği temel derleyici testine neden olur :

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

çünkü dosyanın yolunun uzunluğu, örneğin

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

MAX_PATH kısıtlamasını aşıyor.

CMake daha sonra CXX derleyicisi olmadığı sonucuna varır.


2

Visual Studio'nun doğru sürümünü seçtiğinizden emin olun. Bu göründüğünden daha zor çünkü Visual Studio 2015 aslında Visual Studio 14 ve benzer şekilde Visual Studio 2012 Visual Studio 11'dir. 2015'i yüklediğimde, aslında Visual Studio 2017 olan Visual Studio 15'i yanlış seçmiştim.



1

Ayrıca sudo kullanıcısı olduğunuzdan ve çalıştığınız dizinde OKUMA / YAZMA erişiminizin olduğundan emin olabilirsiniz. OS X'te benzer bir sorun yaşadım ve sadece sudo moduna girerek sorunu çözdüm.


1

Gelecekte benim gibi birine yardımcı olması durumunda:

VS 2017 ile WebKit oluşturmaya çalışırken, 3 farklı 64 bit makinede (Win7, Windows 8.1 VM ve WIn 8.1 dizüstü bilgisayar) bu sorunu 24 saattir yaşıyorum.

Buradaki basit sorun, VC ++ derleyicisinin (yani cl.exe ve onun bağımlı DLL'leri) CMake tarafından görülmemesidir. Basit. Bu ikili dosyaları içeren VC ++ klasörlerini CMake ve çalışan komut isteminize görünür hale getirerek (eğer Cmake'yi bir komut isteminden çalıştırıyorsanız), işte! (Başkaları tarafından dile getirilen kilit noktalara ek olarak, yukarıda)

Her neyse, her türlü düzeltmeden sonra - bu birçok forumda yayınlandığı gibi - PATH değişkeninin içeriğinin birden fazla Visual Studio BIN yolu vb. İle dağınık olmamasını sağlamanın basit bir mesele olduğunu keşfettim; ve bunun yerine şunlara işaret eder:

a) derleyicinizin konumu (yani , Visual Studio'nun tercih ettiğiniz sürümü için cl.exe ), benim durumumda (64 bit platformu hedefleyen ve 64 bitlik bir ana bilgisayarda geliştirme): C: \ Program Files (x86 ) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64

b) ve ek olarak, bağımlı bir DLL içeren klasör ( cl.exe'ye bağlıdır): api-ms-win-crt-runtime-l1-1-0.dll - makinemde :

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

Basitleştirilmiş ve ÖZEL Sistem Yolu değişkenine eklenen bu iki dizin (Yönetici ayrıcalıklı komut istemi altında çalışan), "CMAKE_C_COMPILER bulunamadı" ve "CMAKE_CXX_COMPILER bulunamadı" durumumu ortadan kaldırdı. hatalar.

Umarım birine yardımcı olur.


1

CMake'nin Xcode oluşturucusunu kullanırken ccache etkinleştirilirse tam olarak bildirilen hatayı alıyorum . Ccache'yi devre dışı bırakmak benim için sorunu çözdü. Aşağıda, MacOS için çalışan ancak diğer platformlarda da benzer şekilde çalışması gereken bir düzeltme / kontrol sunuyorum.

Görünüşe göre, CMake'nin Xcode oluşturucusunu (ve diğerlerini) burada açıklandığı gibi ccache ile birlikte kullanmak da mümkündür . Ama ben hiç denemedim.

# 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" çıktısının Xcode kurulumuma işaret ettiğinden emin olarak aynı sorunu çözebildim. Benim durumumda Xcode kurmak ve "xcode-select -r" çalıştırmak yeterliydi.
TomTasche

0

Visual Studio 2015 güncelleme 2'yi Visual Studio 2015 güncelleme 3'e güncelledim ve sorunumu çözdü.


Bu çözüm, bir Windows işletim sistemi güncellemesinden sonra iş yerimde gerekliydi. Hatayı düzeltmek için bu sayfadaki çözümlerden en az 2 tanesini kullandım. Hata, herhangi bir sayıda durumda ortaya çıkabilir, bu nedenle birkaç farklı, ancak uygulanabilir yanıtlar vardır.
Natalie Cottrill

0

No CMAKE_CXX_COMPILER could be found.Komut satırından CMake çalıştırırken cmake-gui ( ) ile aynı sorunu yaşadım . Girişleri manuel olarak ekledikten sonra

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 ortam değişkenine benim için çalıştı.


0

Benim için sadece o Visual Studio ile gelir ve Geliştirici Komut İstemi kullanmaya çalıştı cdetmek your/jcef/dirve çalıştırmakcmake -G "Visual Studio 14 Win64" ..



0

Bu sorunun visual studio 2015 ile ilgili olduğunu biliyorum. Visual studio 2017 ile bu sorunla karşılaştım. Google'da aradığımda bu sayfaya geldim. İlk 2,3 cevaba baktıktan sonra vc ++ kurulumundaki sorunun bu olduğunu anladım. "C ++ ile masaüstü geliştirme" iş yükünün yüklenmesi sorunu çözdü.

C ++ ile masaüstü geliştirme


0

ARM bulursanız Cmakelists.txt dosyasına bakın ARM için C ++ yüklemeniz gerekir

Bu paketler:

ARM64 için C ++ Evrensel Windows Platformu "Gerekli Değil"

ARM için Visual C ++ Derleyicileri ve kitaplıkları "Gerekli Değildir"

ARM64 için Visual C ++ Derleyicileri ve kitaplıkları "Çok Muhtemelen Gerekli"

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

Sonra sorunlar

CMAKE_C_COMPILER bulunamadı.

CMAKE_CXX_COMPILER bulunamadı.

Clang gibi bir derleyici belirtmezseniz ortadan kalkabilir ve belki clang yüklemek başka bir işleve yarayabilir.

ARM için derlemiyorsanız, cmakelists.txt'de isteğe bağlı olarak kaldırmayı hem # önce enable_language ile yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.