CMake, Visual C ++ derleyicisini bulamıyor


118

Visual Studio 2015'i yükledikten ve CMake'i önceki bir projede çalıştırdıktan sonra, C derleyicisini bulamadığını belirten CMake hataları.

The C compiler identification is unknown
The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:4 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

cl.exeVisual Studio klasöründe aramaya gittim C:\Program Files\Microsoft Visual Studio 14.0ve bulamadım.

CMake'i Windows'ta Visual Studio 2015 ile çalışacak şekilde nasıl kurarım?


1
Belki de 2015 kurulum yolu CMake'nin beklediği şey değil? Hangi CMake sürümünü kullanıyorsunuz? Ayrıca, CMake'in Windows sürümünü bilmiyorum, ancak CMake'nin PATHihtiyaç duyduğu programı bulmak için içine bakması mümkün olabilir , bu nedenle güncellenmemişse derleyiciyi bulamaz.
Bazı programcı ahbap

1
Visual Studio 2015
Asher

1
3.2.x sürümünü kullanın, VS2015'ten önce Cmake'yi yüklediğimde bu sorunla karşılaştım, bu yüzden cmake'yi yeniden yükleyin bunu benim için düzeltin
Andiana

Bazen bilgisayarınızı yeniden başlatmayı unutursunuz veya bir Visual Studio yüklemesinden veya güncellemesinden sonra bunu yapmak istemezsiniz. Bu durumda CMake derleyicinizi bulamayacaktır.
Noki

Yanıtlar:


124

Çözümü buldum. Visual Studio IDE başarıyla kurulurken, herhangi bir derleme aracı yüklemedi ve bu nedenle C ++ derleyicisini yüklemedi.

Visual Studio 2015 GUI'de manuel olarak bir C ++ projesi oluşturmaya çalışarak , C ++ paketlerini indirmesini isteyebildim. CMake daha sonra herhangi bir zorluk çekmeden derleyiciyi bulabildi.


2
Harika, bu cevap bana ipucu verdi. VS2015 ISO'umu C ++ bileşenlerini yüklemek için kullanıyorum ve sorun çözüldü.
Peter Liang

Ayrıca VS2015 ISO kullanarak kurdum ve sadece temel vb / c # parçalarını kurdum. Diğer c ++ öğelerini değiştirmek ve yüklemek için ISO'yu yeniden başlatmak zorunda kaldı.
Abhinav Gauniyal

2
Tam olarak hangi paketleri / bileşenleri / öğeleri yüklediniz? Bir Visual C ++ / Win32Project oluşturdum ve iki bileşen kurdum ve VS içinde OK çalıştırdım, ancak cmake hala eskisi gibi şikayet ediyordu. Teşekkürler. -S
ssimm

Bu çok iyi!
user2434741

2
Bu, 2017'ye karşı da işe yaradı - ne tuhaf bir şey! Bahşiş için teşekkürler dostum!
Steve Horvath

36

İşte benim için çalışan çözüm:

  1. Visual Studio komut istemi aracını açın (yönetici olarak). Windows 10'da 'Geliştirici komut istemi' olarak adlandırılabilir.
  2. CMake yürütülebilir dosyasının bulunduğu yere gidin
  3. Cmake.exe'yi çalıştırın
  4. Derleme ve kaynak klasörü seçmek için her zamanki gibi ilerleyin
  5. Uygun Visual Studio derleyicisini seçin ve yapılandır düğmesine basın

Umarım sorunsuz çalışmalıdır.


3
Yönetici olarak VS Komut istemini çalıştırmanız gerektiğini düşünmüyorum. Ancak VS komut istemini çalıştırmak, cmake'nin aradığı her şeyi yola koyar. CMake'i nasıl kurduğunuza bağlı olarak (yola koyup koymadığınıza), ayrıca yapı dizininize gidebilir ve cmake ..oradan çalıştırabilirsiniz . Yine de oy verildi, çünkü örneğin git-bash terminali otomatik olarak her şeyi yoluna koymaz. Bu bana yardımcı oldu!
hetepeperfan

1
Bu, bir çözümden çok geçici bir çözüm gibi görünüyor, çünkü normalde IDE üreteçleri dev komut istemleri kümesinde bulunan çeşitli ortam değişkenlerine ihtiyaç duymazlar (yalnızca bir makefile üreteci veya benzerini kullanıyorsanız buna ihtiyacınız olur. Ninja olarak)
Ryan Pavlik

2
güncelleme: Windows 10'da buna Geliştirici Komut İstemi
Mattijs

2
Çok garip açıklama: 1: VS Studio komut istemi olarak adlandırılmıyor 2: "navigate", "cd" komutunu mu kullanmak istiyorsunuz? 3: Yani, cmake-gui çalıştırmak mı? 5. adımda dediğiniz gibi bir düğmeyi "tıklamak" için 4: Devam et ?? doldurmak mı demek istiyorsun? 5: Yapılandırma penceresindeki açılır kutuda VS derleyicisini seçebilirim, ancak yine de C & C ++ derleyicileri bilinmiyor ...
DrumM

1
Btw, sadece search cmake yazın ve cmake-
gui'yi

31

CMakeError.log dosyasına baktım ve şu hatayla ilgili bir hata buldum: cannot run 'rc.exe'

RC.Exe ve RcDll.Dll'yi Microsoft SDK'lardan VC bölmesine kopyalamak için bu cevabı aradım ve buldum ve ardından CMake çalıştı.


Düzenleme: Başka bir sorunun en üst yanıtı , bunun bir PATH sorunu olduğunu gösterir, bu nedenle Microsoft SDK bölmesinin PATH'nizde olduğundan emin olmak yeterli olabilir.


15

Oluşturucuda Visual Studio'nun doğru sürümünü kullandığınızdan emin olun. Visual Studio 14 yüklendiğinde hatalı olarak Visual Studio 15'i seçmiştim.


3
Bu benim de sorunumdu. Kafa karıştırıcı çünkü Visual Studios 2015, Versiyon 14!
Paul Wintz

4
VS'nin sürümünü değiştirmek için önbelleğinizi silmeniz gerekebileceğini unutmayın. Bunu yapmak için Dosya> Önbelleği Sil'i tıklayın.
Paul Wintz

Bu yardımcı oldu ... en iyi şekilde versiyonlama!
Noel Widmer

arrrrg, @PaulWintz bu hatırlatıcı için teşekkür ederim. Sanırım benim durumumda temiz bir cmake önbelleği ile cmake çalıştırdım, ancak VisualStudio bir VS güncellemesini tamamlamak için bilgisayarı yeniden başlatmamı beklerken ve ardından kötü durumu akıllıca önbelleğe aldı.
orion elenzil

13

Visual Studio 2017'de bununla karşılaşanlar: CMake ile ilgili, ilgili derleyici araç setleriyle birlikte seçilmesi ve yüklenmesi gereken bir özellik vardır. Aşağıdaki ekran görüntüsüne bakın.

CMake için Visaul C ++ araçları yüklenmelidir


Peki ya 2015 versiyonu? 2015 kurulumunda bu onay kutusunu bulamadım. Çözümlerden biri 2017'ye güncellemek olabilir ...
DrumM

1
@DrumM, bu özellikle Visual Studio 2017 için. Özelliğin VS 2015'te var olduğuna inanmıyorum.
Vadim Berman

Bunun gerekli olduğundan emin misin? Yalnızca Visual Studio içinden CMake kullanmak için değil mi?
Peter Mortensen

@PeterMortensen: Benim için sorunu çözdü. Yine, Visual Studio 2017.
Vadim Berman

9

Yukarıdaki çözümlerden hiçbiri işe yaramadıysa, durun ve bir sağlık kontrolü yapın.

Yanlış -G <config>ipi kullanarak yandım ve bana bu yanıltıcı hatayı verdi.

İlk olarak, normal komut isteminden değil VS Komut İstemi'nden çalıştırın . Bunu içinde bulabilirsiniz Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015Bu, VS araçlarına, vb. Tüm doğru yolları ayarlar.

Şimdi cmake'de hangi jeneratörlerin mevcut olduğunu görün ...

cmake -help

...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

Daha sonra uygun bir dize tercih ile ilave [kemer].

mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

Bir alt dizinde cmake çalıştırmak, o dizindeki her şeyi silebileceğiniz için 'temiz' yapmayı kolaylaştırır.

Visual Studio 15'e yükselttim ancak dikkat etmedim ve 2012 için oluşturmaya çalışıyordum.


7

Benim için CMakeError.logdosyayı kontrol ettim ve buldum:

[...] MSB8036 hatası: Windows SDK sürüm 8.1 bulunamadı. Windows SDK'nın gerekli sürümünü yükleyin veya proje özellik sayfalarında veya çözüme sağ tıklayıp "Yeniden hedefleme çözümü" seçerek SDK sürümünü değiştirin.

Bu, Windows 7'de Visual Studio 2017 kullanılmasına rağmen. Dolayısıyla CMake, algılama projesini Windows 8.1 SDK ile oluşturmaya çalışıyor gibi görünüyor.

Bu bileşeni eklemek için Visual Studio yükleyicisini kullandım ve şimdi CMake bir midye kadar mutlu.


4

Menü → Visual Studio 2015 → Visual Studio 2015 için MSBuild Komut İstemi. Sonra CMake bulabilir cl.exe.

set PATH="c:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\";%PATH%

Windows SDK'nızın kurulu olduğu yerin üst yolunu değiştirin.

CMake bulabilir rc.exe.

yoluna cd CMakeLists.txtve yap:

md .build
cd .build
cmake .. -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release
cmake --build .

Sonraki parametre -GCMake tarafından getirilmelidir. Kullanım --help; jeneratöre sahip olabilirsiniz veya olmayabilir.


Msvc 2015 ve 2017'yi yüklediğinizde ve msvc 2015 ile oluşturmaya çalıştığınızda, vs2015 komut istemini çalıştırırken 10.0 SDK'yı otomatik olarak algılar. "VS2015 x64 Yerel Araçlar Komut İstemi" ni 8.1 sdk'yi komut satırı parametresinin sonuna şu şekilde ekleyerek zorlamak için değiştirerek SDK sürümünü belirtebilirsiniz; "% comspec% / k" "C: \ Program Files (x86) \ msdev2015 \ VC \ vcvarsall.bat" "amd64 8.1"
kalmiya

'Visual Studio 2015 için MSBuild Komut İstemi'ni ayrı ayrı yüklemem gerekir mi? Msvc 2017'yi kurdum ama görsel stüdyo için komut istemi yok.
meen

2

Aynı sorunla karşılaştım ve Visual Studio Yüklemesini yeniden başlatıp aşağıdaki seçeneği işaretleyerek sorunu çözdüm:

Windows and Web Development/ Universal Windows App Development Tools/Windows 10 SDK

Çoğu uygulamada kullanılan standart C ++ üstbilgilerini içerir ve bu nedenle genellikle onu yüklemek de gereklidir.


2

Visual Studio 2015 Express çalışırken bu sorunu Windows 10 altında Visual Studio 2015 Professional kullanırken yaşadım! Windows 7 altında, her iki Visual Studio sürümü de çalışıyordu.

Visual Studio 2015 Professional IDE'den oluşturulan yeni projeler başarıyla derlenir, ancak CMake derleyici raporlamasını bulamaz:

The C compiler identification is unknown
The CXX compiler identification is unknown

CMake'i 3.4.1'den 3.11.4'e yükselttim ve şimdi sorun ortadan kalktı.


1

Visual Studio 2017 kullanıyorsanız en az CMake 3.8'e ihtiyacınız var!


1

CMake aracılığıyla oluşturulan Visual Studio 2017 projesinde benzer bir sorun yaşadım. C ++ ile Masaüstü geliştirmede Visual Studio yüklenirken bazı paketler eksikti. Anlık görüntüye bakın:

Visual Studio 2017 Paketleri:

Visual Studio2017 Paketleri

Ayrıca CMake'i en son sürüme yükseltin.


0

Benim durumumda, bu hatanın nedeni olan bir ortam değişkeni seti vardı. Ortam değişkenlerinden cxx_flags silindikten sonra sorun çözüldü.


0

Visual Studio 2017 güncellemesinden sonra CMake 3.12.1 ile bu sorunu yaşadım. CMake'i yeniden çalıştırdım ve işe yaradı.


0

Benim durumumda CMakeError.logCMake'in Windows SDK'yı ( MSB8003: Could not find WindowsSDKDir variable from the registry) bulamadığını görebiliyordum .

Sürüm, aşağıdakiler kullanılarak ilk CMake çalıştırmasında komut satırında belirtilebilir:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

Bunu ayarladıktan sonra daha da ileri gittim, ancak daha sonra daha fazla sorunla karşılaştım (bu yüzden ortamımın bir şekilde karıştığını varsayıyorum), ancak belki bu konuda birine yardımcı olabilir.


0

Birkaç ipucu:

  • "Gelişmiş" seçeneğini işaretleyerek ve CMAKE_LINKER ve CMAKE_MAKE_PROGRAM'ı değiştirerek yolu manuel olarak ayarlamayı deneyin
  • Önbelleği silin - GUI'li CMake'de şuraya gidin: Dosya → Önbelleği Sil.

Benim sorunum daha önce belirtilenlerin bir kombinasyonuydu: Derleyici sürümünü 14 yerine 15 olarak ayarladım ve düzeltildiğinde önbelleği silmem gerekti.

Ayrıca bir yönetici olarak Visual Studio komut istemini başlattım ve oradan cmake-gui.exe'yi çalıştırdım

Sonra her şey olması gerektiği gibi çalıştı.


0

Benim durumumda sorun, googletest'i de içeren ana projenin

add_subdirectory(gtest_dir)

olarak tanımlandı

PROJECT( projname CXX )

CMake bir şekilde tanımıyor

PROJECT(sub_project_name CXX C)

C derleyicisi üst öğede ayarlanmadığından.

Sorunu kullanarak çözdüm

PROJECT( projname CXX C)

ana CMakeLists.txtdosyamda.



0

Önceki çözümlerin hiçbiri benim için işe yaramadı. Ancak, Visual Studio sürüm 15'i yüklememe rağmen (Visual Studio 2015 ile karıştırılmamalı) bilgisayarımda oluşturulan dizinin Visual Studio 14 için olduğunu fark ettim.

Yapılandırma düğmesine bastığımda Visual Studio 14'ü belirttiğimde çalıştı.


Visual Studio için sürüm numaralandırması sadece ... garip. Visual Studio 14 gerçekte Visual Studio 2015, Visual Studio 2014 yok. Trophygeek'in cevabına bakın stackoverflow.com/a/40332976/1319284
kutschkem

0

Bu çözümü stackoverflow'da buldum ve benim için çalışıyorum, ancak bir Windows 10 işletim sisteminiz varsa diğer çözümlerde çalışmıyorum, aşağıdaki adımları yapmak sorunu çözecektir:

1) C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1A \ Bin konumuna gidin

2) daha sonra bu dosyadan RC.exe ve RcDll'yi kopyalayın

3) C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ bin'e gidin ve kopyaladığınız iki dosyayı buraya yapıştırın.

Hepsi bu kadar umarım yardımcı olur ...


0

ARM bulursanız Cmakelists.txt dosyasına bakın ve ARM için C ++ yüklemeniz gerekir ve ayrıca ARM bin klasörü için vcvarsall.bat kullanın.

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)

O zaman sorunlar ortadan kalkabilir:

CMAKE_C_COMPILER bulunamadı.

CMAKE_CXX_COMPILER bulunamadı.

Yukarıdakiler sorununuzu çözmezse?

İsteğe bağlı olarak, cmakelists.txt dosyasındaki C ve CXX seçeneklerini, enable_language (C) 'nin bulunduğu yere # infront ayarlayarak kaldırabilirsiniz. Ve Android ARM işlemci derlemesinden kaçının.



0

Bununla ilgili bir sorunum vardı: Visual C ++ oluşturucuları çalışırken listede bile değildi cmake --help.

where cmakeKonsolda koştum ve cygwin'in de kullanılmakta olan kendi cmake.exe dosyasını sağladığını gördüm . PATH'deki dizinlerin sırasını değiştirmek sorunu çözdü.


0

CMakeFiles içinde CMakeErrors.log kontrol edildiğinde:

C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.targets (36,5): uyarı MSB8003: WindowsSdkDir_71A değişkeni kayıt defterinden bulunamadı. TargetFrameworkVersion veya PlatformToolset geçersiz bir sürüm numarasına ayarlanmış olabilir.

Hata, XP (v140_xp) için derleme araçlarının yüklü olmadığı anlamına gelir. Bunu düzeltmek için Visual Studio 2019 yükleyicide Bireysel Bileşenler sekmesi altında uygun özelliği yükledim:

görüntü açıklamasını buraya girin


0

CMake GUI ve VS 21019 Community Edition'da bu sorunu yaşadım. CMake'i Visual Studio'dan önce kurmuş olabileceğimi düşünüyorum - kesinlikle CMake 3.15.2'yi 3.15.3'e güncelledikten sonra sorun ortadan kalktı.



-3

CMake, Visual Studio derleyicinizi bulamadığı için. Gerekli derleyicileri indirecek herhangi bir projeyi başlatın ve CMake daha sonra onu bulabilmelidir.

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.