CMake tidak menemukan kompiler Visual C ++

118

Setelah menginstal Visual Studio 2015 dan menjalankan CMake pada proyek sebelumnya, kesalahan CMake menyatakan bahwa ia tidak dapat menemukan compiler C.

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.

Saya pergi mencari cl.exedi folder Visual Studio C:\Program Files\Microsoft Visual Studio 14.0, dan tidak dapat menemukannya.

Bagaimana cara menyiapkan CMake agar berfungsi di Windows dengan Visual Studio 2015?

Asyer
sumber
1
Mungkin jalur instalasi 2015 tidak seperti yang diharapkan CMake? Versi CMake mana yang Anda gunakan? Juga, saya tidak tahu tentang CMake versi Windows, tetapi mungkin saja CMake PATHmencari program yang dibutuhkannya, jadi jika tidak diperbarui maka ia tidak dapat menemukan kompilernya.
Beberapa programmer dude
1
Saya menggunakan cmake versi 3.2.3 yang mengklaim memiliki dukungan untuk Visual Studio 2015
Asher
1
Gunakan versi 3.2.x, saya menemui masalah ini ketika saya menginstal Cmake sebelum VS2015, jadi instal ulang cmake perbaiki ini untuk saya
Andiana
Terkadang Anda lupa untuk me-reboot komputer Anda, atau tidak ingin setelah penginstalan atau pembaruan Visual Studio. Dalam kasus ini, CMake tidak akan menemukan kompiler Anda.
Noki

Jawaban:

124

Saya sudah menemukan solusinya. Sementara Visual Studio IDE berhasil diinstal, tidak menginstal alat pembuatan apa pun dan oleh karena itu tidak menginstal compiler C ++.

Dengan mencoba untuk secara manual membuat proyek C ++ di Visual Studio 2015 GUI saya dapat meminta untuk mengunduh paket C ++. CMake kemudian dapat menemukan kompiler tanpa kesulitan apapun.

Asyer
sumber
2
Keren, jawaban ini memberi saya petunjuk. Saya menggunakan VS2015 ISO saya untuk menginstal komponen C ++ dan masalah terpecahkan.
Peter Liang
Saya juga menginstal menggunakan VS2015 ISO dan menginstal bagian dasar vb / c # saja. Harus meluncurkan ISO lagi untuk memodifikasi dan menginstal hal-hal c ++ lainnya.
Abhinav Gauniyal
2
Persisnya paket / komponen / barang mana yang kalian instal? Saya membuat Visual C ++ / Win32Project, dan menginstal dua komponen, dan menjalankan OK di dalam VS, tetapi cmake masih mengeluh seperti sebelumnya. Terima kasih. -S
ssimm
Bagus sekali!
pengguna2434741
2
Ini telah berhasil dengan vs 2017 juga - sungguh hal yang aneh! Terima kasih atas tipnya, sobat!
Steve Horvath
36

Inilah solusi yang berhasil untuk saya:

  1. Buka alat prompt perintah Visual Studio (sebagai administrator). Pada windows 10 mungkin disebut 'Developer command prompt'.
  2. Arahkan ke tempat Anda memiliki CMake yang dapat dieksekusi
  3. Jalankan Cmake.exe
  4. Lanjutkan seperti biasa untuk memilih build dan folder sumber
  5. Pilih kompiler Visual Studio yang sesuai dan tekan tombol konfigurasi

Semoga berjalan tanpa masalah.

Kekayaan
sumber
3
Saya tidak berpikir Anda perlu menjalankan VS Command prompt sebagai administrator. Tetapi menjalankan prompt perintah VS tidak menempatkan semua yang dicari cmake di jalur. Bergantung pada cara Anda menginstal CMake (apakah Anda meletakkannya di jalur), Anda juga dapat menavigasi ke direktori build Anda dan menjalankannya cmake ..dari sana. Tetap mendapat suara positif, karena terminal git-bash misalnya tidak secara otomatis meletakkan semuanya di jalurnya. Ini membantu saya!
hetepeperfan
1
Ini tampaknya lebih seperti solusi daripada solusi, karena biasanya, generator IDE tidak memerlukan berbagai variabel lingkungan seperti yang ditemukan di set prompt perintah dev (Anda hanya memerlukannya jika Anda menggunakan generator makefile atau yang serupa, seperti sebagai Ninja)
Ryan Pavlik
2
update: pada Windows 10 ini disebut Developer Command Prompt
Mattijs
2
Penjelasan yang sangat aneh: 1: Ini tidak disebut VS Studio command prompt 2: "navigasikan", maksud Anda menggunakan perintah "cd"? 3: Maksudmu, jalankan cmake-gui? Seperti yang Anda katakan pada langkah 5 untuk "mengklik" tombol 4: Lanjutkan ?? maksudmu mengisi? 5: Di kotak tarik-turun di jendela konfigurasi, saya dapat memilih kompiler VS, tetapi kompiler C & C ++ masih belum diketahui ...
DrumM
1
Btw, cukup ketik cmake pencarian dan Anda akan menemukan cmake-gui
DrumM
31

Saya mencari di file CMakeError.log dan menemukan kesalahan tentang cannot run 'rc.exe'

Saya mencari dan menemukan jawaban ini untuk menyalin RC.Exe dan RcDll.Dll dari Microsoft SDKs bin ke VC bin, dan kemudian CMake bekerja.


Sunting: Jawaban teratas untuk pertanyaan lain menunjukkan bahwa ini adalah masalah PATH, sehingga cukup untuk memastikan bin Microsoft SDK ada di PATH Anda.

Carl Walsh
sumber
15

Pastikan Anda menggunakan versi Visual Studio yang benar di generator. Saya telah salah memilih Visual Studio 15 ketika Visual Studio 14 diinstal.

Hrushikesh Kulkarni
sumber
3
Ini juga masalahku. Ini membingungkan karena Visual Studios 2015 adalah Versi 14!
Paul Wintz
4
Perhatikan bahwa Anda mungkin perlu menghapus cache untuk mengubah versi VS. Untuk melakukan ini, klik File> Hapus Cache.
Paul Wintz
Ini membantu ... membuat versi yang terbaik!
Noel Widmer
arrrrg, @PaulWintz terima kasih atas pengingatnya. Saya pikir dalam kasus saya, saya menjalankan cmake dengan cache cmake bersih tetapi sementara VisualStudio menunggu saya untuk me-restart komputer untuk menyelesaikan pembaruan VS, dan kemudian dengan cerdik saya membuat cache situasi yang buruk.
orion elenzil
13

Mereka yang tersandung dengan ini di Visual Studio 2017: ada fitur yang terkait dengan CMake yang perlu dipilih dan diinstal bersama dengan kumpulan alat kompiler yang relevan. Lihat gambar di bawah.

Alat Visaul C ++ untuk CMake harus diinstal

Vadim Berman
sumber
Bagaimana dengan versi 2015? Saya tidak dapat menemukan kotak centang ini di instalasi 2015. Salah satu solusinya adalah memperbarui ke 2017 ...
DrumM
1
@Drum, ini khusus untuk Visual Studio 2017. Saya tidak percaya fitur tersebut ada di VS 2015.
Vadim Berman
Apakah Anda yakin ini perlu? Bukankah hanya untuk menggunakan CMake dari dalam Visual Studio?
Peter Mortensen
@PeterMortensen: ini memecahkan masalah untuk saya. Sekali lagi, Visual Studio 2017.
Vadim Berman
9

Jika tidak ada solusi di atas yang berhasil, hentikan dan lakukan pemeriksaan kewarasan.

Saya terbakar menggunakan -G <config>string yang salah dan itu memberi saya kesalahan yang menyesatkan ini.

Pertama, jalankan dari VS Command Prompt bukan dari command prompt biasa. Anda dapat menemukannya di Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015Ini mengatur semua jalur yang benar ke alat VS, dll.

Sekarang lihat generator apa yang tersedia dari cmake ...

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

Kemudian pilih string yang sesuai dengan [lengkungan] yang ditambahkan.

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

Menjalankan cmake di subdirektori membuatnya lebih mudah untuk melakukan 'pembersihan' karena Anda bisa menghapus semua yang ada di direktori itu.

Saya memutakhirkan ke Visual Studio 15 tetapi tidak memperhatikan dan mencoba menghasilkan untuk 2012.

TrophyGeek
sumber
7

Bagi saya, saya memeriksa CMakeError.logfile dan menemukan:

[...] kesalahan MSB8036: Windows SDK versi 8.1 tidak ditemukan. Instal versi Windows SDK yang diperlukan atau ubah versi SDK di halaman properti project atau dengan mengklik kanan solusi dan memilih "Retarget solution".

Ini meskipun menggunakan Visual Studio 2017 pada Windows 7. Jadi tampaknya CMake mencoba membangun proyek pendeteksiannya dengan Windows 8.1 SDK.

Saya menggunakan penginstal Visual Studio untuk menambahkan komponen itu dan sekarang CMake senang sebagai kerang.

chowey
sumber
4

Menu → Visual Studio 2015 → MSBuild Command Prompt untuk Visual Studio 2015. Kemudian CMake dapat menemukan cl.exe.

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

Ubah jalur atas ke tempat SDK Windows Anda diinstal.

CMake dapat menemukan rc.exe.

cd ke jalur CMakeLists.txtdan lakukan:

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

Parameter setelah -Gharus diambil oleh CMake. Gunakan --help; Anda mungkin memiliki atau tidak memiliki generator.

Alen Wesker
sumber
Jika Anda menginstal pnidui 2015 dan 2017, dan mencoba membangun dengan pnidui 2015, itu akan mendeteksi secara otomatis SDK 10.0 saat menjalankan prompt perintah vs2015. Anda dapat menentukan versi SDK dengan mengubah "VS2015 x64 Native Tools Command Prompt" untuk memaksa 8.1 sdk dengan menambahkan di ke akhir parameter baris perintah seperti ini; "% comspec% / k" "C: \ Program Files (x86) \ msdev2015 \ VC \ vcvarsall.bat" "amd64 8.1"
kalmiya
Apakah saya harus menginstal 'MSBuild Command Prompt for Visual Studio 2015' secara terpisah? Saya menginstal pnidui 2017 tetapi prompt perintah untuk studio visual tidak ada.
meen
2

Saya mengalami masalah yang sama dan memperbaikinya dengan meluncurkan kembali Visual Studio Install dan memeriksa opsi berikut:

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

Ini berisi header C ++ standar yang digunakan di sebagian besar aplikasi dan oleh karena itu sering kali perlu untuk menginstalnya juga.

Philippe Ferdinand
sumber
2

Saya mengalami masalah ini di bawah Windows 10 saat menggunakan Visual Studio 2015 Professional, sementara Visual Studio 2015 Express berfungsi! Di bawah Windows 7, kedua versi Visual Studio dulu berfungsi.

Proyek baru yang dibuat dari Visual Studio 2015 Professional IDE berhasil dikompilasi, tetapi CMake akan gagal menemukan pelaporan compiler:

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

Saya memutakhirkan CMake dari 3.4.1 menjadi 3.11.4, dan sekarang masalahnya hilang.

jpo38
sumber
1

Jika Anda menggunakan Visual Studio 2017, Anda memerlukan setidaknya CMake 3.8!

Lars Bilke
sumber
1

Saya memiliki masalah serupa dengan proyek Visual Studio 2017 yang dihasilkan melalui CMake. Beberapa paket hilang saat menginstal Visual Studio dalam pengembangan Desktop dengan C ++. Lihat snapshot:

Paket Visual Studio 2017:

Paket Visual Studio2017

Selain itu, tingkatkan CMake ke versi terbaru.

vinodsaluja
sumber
0

Dalam kasus saya, ada satu set variabel lingkungan yang menjadi alasan kesalahan ini. Masalahnya diselesaikan setelah menghapus cxx_flags dari variabel lingkungan.

Starger
sumber
0

Saya mendapat masalah ini dengan CMake 3.12.1, setelah pembaruan Visual Studio 2017. Saya cukup menjalankan ulang CMake dan berhasil.

0xF
sumber
0

Dalam kasus saya, saya dapat melihat CMakeError.logbahwa CMake tidak dapat menemukan SDK Windows ( MSB8003: Could not find WindowsSDKDir variable from the registry).

Versi dapat ditentukan pada baris perintah pada CMake pertama yang dijalankan menggunakan:

-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=

Saya melangkah lebih jauh setelah mengaturnya, tetapi saya mengalami lebih banyak masalah nanti (jadi saya berasumsi lingkungan saya entah bagaimana kacau), tetapi mungkin itu akan membantu seseorang dengan masalah ini.

Zitrax
sumber
0

Beberapa tip:

  • Coba setel jalur secara manual dengan mencentang 'lanjutan' dan memodifikasi CMAKE_LINKER dan CMAKE_MAKE_PROGRAM
  • Hapus cache - di CMake dengan GUI buka: File → Hapus Cache.

Masalah saya adalah kombinasi dari yang disebutkan sebelumnya: Saya telah menyetel versi kompiler ke 15, bukan 14 dan ketika diperbaiki, saya harus menghapus cache.

Saya juga memulai prompt perintah Visual Studio sebagai administrator dan dari sana saya menjalankan cmake-gui.exe

Kemudian semuanya berjalan sebagaimana mestinya.

Rarach
sumber
0

Dalam kasus saya, masalahnya adalah bahwa proyek induk, yang termasuk googletest via

add_subdirectory(gtest_dir)

didefinisikan sebagai

PROJECT( projname CXX )

Entah bagaimana, CMake tidak mengenali

PROJECT(sub_project_name CXX C)

karena kompilator C tidak disetel di induknya.

Saya memecahkan masalah dengan menggunakan

PROJECT( projname CXX C)

di CMakeLists.txtfile utama saya .

mojovski
sumber
0

Tidak ada solusi sebelumnya yang berhasil untuk saya. Namun saya perhatikan bahwa meskipun saya menginstal Visual Studio versi 15 (jangan dikelirukan dengan Visual Studio 2015) direktori yang dibuat di komputer saya adalah untuk Visual Studio 14.

Ketika saya menentukan Visual Studio 14 ketika saya menekan tombol konfigurasi itu berhasil.

Gamaliel
sumber
Penomoran versi untuk Visual Studio hanya ... ganjil. Visual Studio 14 sebenarnya adalah Visual Studio 2015, tidak ada Visual Studio 2014. Lihat jawaban
trophygeek
0

saya menemukan solusi ini di stackoverflow dan saya bekerja untuk saya meskipun tidak berfungsi solusi lain jika Anda memiliki OS windows 10, melakukan langkah-langkah berikut akan memperbaiki masalah:

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

2) lalu salin RC.exe dan RcDll dari file ini

3) pergi ke C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ bin dan tempelkan dua file yang telah Anda salin ke dalamnya.

hanya itu yang saya harap ini membantu ...

harimau pintar
sumber
0

Lihat di Cmakelists.txt jika Anda menemukan ARM Anda perlu menginstal C ++ untuk ARM dan juga menggunakan vcvarsall.bat untuk folder bin ARM.

Ini paket-paket ini:

Platform Windows Universal C ++ untuk ARM64 "Tidak Diperlukan"

Visual C ++ Compiler dan library untuk ARM "Tidak Diperlukan"

Visual C ++ Compiler dan library untuk ARM64 "Sangat Mungkin Diperlukan"

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

Kemudian masalahnya mungkin hilang:

Tidak ada CMAKE_COMPILER yang dapat ditemukan.

Tidak ada CMAKE_CXX_COMPILER yang dapat ditemukan.

Jika di atas tidak menyelesaikan masalah Anda?

Secara opsional, Anda dapat menghapus opsi C dan CXX di cmakelists.txt dengan menyetel # di depan tempat enable_language (C) berada. Dan hindari kompilasi prosesor Android ARM.

Dealazer
sumber
0

Diselesaikan dengan menambahkan komponen yang hilang Modify-> lanjutkan tambahkan sebagai berikut Memperbaiki

ABDULRAHMAN ALKHAMEES
sumber
Jawaban hanya tautan tidak disarankan.
Ṃųỻịgǻňạcểơửṩ
0

Saya memiliki masalah terkait: generator Visual C ++ bahkan tidak ada dalam daftar saat dijalankan cmake --help.

Saya menjalankan where cmakekonsol dan menemukan bahwa cygwin juga menyediakan file cmake.exe sendiri , yang sedang digunakan. Mengubah urutan direktori di PATH memperbaiki masalah.

stgatilov.dll
sumber
0

Memeriksa CMakeErrors.log di CMakeFiles menghasilkan:

C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \ Platforms \ x64 \ PlatformToolsets \ v140_xp \ Toolset.t Target (36,5): peringatan MSB8003: Tidak dapat menemukan variabel WindowsSdkDir_71A dari registri. TargetFrameworkVersion atau PlatformToolset mungkin disetel ke nomor versi yang tidak valid.

Kesalahan ini berarti bahwa alat pembangunan untuk XP (v140_xp) tidak diinstal. Untuk memperbaikinya saya menginstal fitur yang tepat di Visual Studio 2019 penginstal di bawah tab Komponen Individual:

masukkan deskripsi gambar di sini

Nathan Moinvaziri
sumber
0

Saya mengalami masalah ini dengan CMake GUI dan VS 21019 Community Edition. Saya pikir saya mungkin telah menginstal CMake sebelum Visual Studio - tentu saja setelah saya memperbarui CMake 3.15.2 ke 3.15.3 masalahnya hilang.

Mike Pelton
sumber
0

Periksa folder nama terlalu panjang atau tidak.

pengguna1633912
sumber
-3

Karena CMake tidak dapat menemukan kompiler Visual Studio Anda. Mulailah proyek apa pun yang akan mengunduh kompiler yang diperlukan dan CMake harus dapat menemukannya nanti.

Kushal
sumber