Saya mencoba membuat solusi Visual Studio dengan CMake untuk mengkompilasi versi terbaru dari aseprite dan CMake terus memberi saya:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
Saya sudah mengunduh GCC, dan saya menggunakan Visual Studio 2015 .
Saya mengikuti tutorial ini:
c++
visual-studio
gcc
cmake
visual-studio-2015
Caio Fontes
sumber
sumber
cmake .. -G "Visual Studio 14 2015"
ataucmake .. -G "MSYS Makefiles"
(jikagcc
berartiMinGW
). Dan saya telah melihat banyak pertanyaan itu (seperti di sini , di sini , atau di sini ) dan saya pikir kami kehilangan jawaban tutorial / gabungan tentang SO.Jawaban:
Pesan kesalahan itu
atau
hanya berarti CMake tidak dapat menemukan compiler C / CXX Anda untuk mengompilasi program pengujian sederhana (salah satu hal pertama yang dicoba CMake saat mendeteksi lingkungan build Anda).
Langkah-langkah untuk menemukan masalah Anda bergantung pada lingkungan build yang ingin Anda hasilkan. Tutorial berikut adalah kumpulan jawaban di sini di Stack Overflow dan beberapa pengalaman saya sendiri dengan CMake di Microsoft Windows 7/8/10 dan Ubuntu 14.04.
Prasyarat
Anda memiliki direktori build yang bersih (karena CMake melakukan cache dari percobaan terakhir) misalnya sebagai sub-direktori dari struktur pohon sumber Anda
Windows cmd.exe
Bash shell
dan pastikan shell perintah Anda mengarah ke direktori keluaran biner yang baru Anda buat.
Hal-hal umum yang dapat / harus Anda coba
Apakah CMake dapat menemukan dan menjalankan dengan semua / kompiler default Anda? Jalankan tanpa memberi generator
Sempurna jika menentukan generator yang akan digunakan dengan benar - seperti di sini
Visual Studio 14 2015
Apa sebenarnya yang gagal?
Di direktori keluaran build sebelumnya, lihat
CMakeFiles\CMakeError.log
pesan kesalahan apa pun yang masuk akal bagi Anda atau coba buka / kompilasi proyek uji yang dibuat diCMakeFiles\[Version]\CompilerIdC
|CompilerIdCXX
langsung dari baris perintah (seperti yang ditemukan di log kesalahan).CMake tidak dapat menemukan Visual Studio
Coba pilih versi generator yang benar :
Jika itu tidak membantu, cobalah untuk mengatur variabel lingkungan Visual Studio terlebih dahulu (jalur dapat bervariasi):
atau gunakan pintasan di
Developer Command Prompt for VS2015
Start Menu Windows di bawahAll Programs
/Visual Studio 2015
/Visual Studio Tools
(terima kasih di @Antwane untuk petunjuknya).Latar Belakang : CMake mendukung semua rilis dan rasa Visual Studio (Express, Community, Professional, Premium, Test, Team, Enterprise, Ultimate, dll.). Untuk menentukan lokasi kompilator, ia menggunakan kombinasi pencarian registri (misalnya at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\[Version];InstallDir
), variabel lingkungan sistem dan - jika tidak ada yang lain yang menemukan sesuatu - coba panggil kompilator.CMake tidak dapat menemukan GCC (MinGW / MSys)
Anda memulai
bash
shell MSys denganmsys.bat
dan hanya mencoba menelepon secara langsunggcc
Di sini ia menemukan
gcc
dan mengeluh bahwa saya tidak memberikan parameter apa pun untuk dikerjakan.Jadi berikut ini seharusnya berhasil:
Jika GCC tidak ditemukan, panggil
export PATH=...
untuk menambahkan jalur kompiler Anda (lihat Bagaimana cara menyetel variabel lingkungan PATH dalam skrip CMake? ) Dan coba lagi.Jika masih tidak berfungsi, coba setel
CXX
jalur kompilator secara langsung dengan mengekspornya (jalur mungkin berbeda)Untuk detail selengkapnya, lihat Cara menentukan jalur GCC baru untuk CMake
Catatan : Saat menggunakan generator "MinGW Makefiles", Anda harus menggunakan
mingw32-make
program yang didistribusikan dengan MinGWMasih tidak bekerja? Itu aneh. Harap pastikan bahwa kompilator ada di sana dan memiliki hak yang dapat dieksekusi (lihat juga bab prasyarat di atas).
Jika tidak, upaya terakhir CMake adalah tidak mencoba pencarian kompiler itu sendiri dan mengatur variabel internal CMake secara langsung
Untuk lebih jelasnya lihat Cmake tidak menghormati -D CMAKE_CXX_COMPILER = g ++ dan Cmake kesalahan pengaturan kompiler
Atau variabel-variabel tersebut juga dapat diatur melalui
cmake-gui.exe
di Windows. Lihat Cmake tidak dapat menemukan kompilerLatar Belakang : Mirip dengan Visual Studio. CMake mendukung semua jenis GCC. Ia mencari variabel lingkungan (CC, CXX, dll.) Atau hanya mencoba memanggil kompilator. Selain itu akan mendeteksi awalan apapun (ketika cross-compiling ) dan mencoba untuk menambahkannya ke semua binutils dari GNU compiler toolchain (
ar
,ranlib
,strip
,ld
,nm
,objdump
, danobjcopy
).sumber
Untuk Ubuntu, instal hal-hal di bawah ini:
sumber
Ini terjadi pada saya setelah saya menginstal Visual Studio 15 2017.
Kompiler C ++ untuk Visual Studio 14 2015 bukanlah masalah. Tampaknya ada masalah dengan SDK Windows 10.
Menambahkan Windows 10 SDK ke Visual Studio 14 2015 memecahkan masalah bagi saya.
Lihat tangkapan layar terlampir.
sumber
Saya juga mengalami kesalahan ini saat bekerja dengan CMake:
Kotak 'peringatan' di artikel perpustakaan MSDN Visual C ++ di Visual Studio 2015 memberi saya bantuan yang saya butuhkan.
Visual Studio 2015 tidak dilengkapi dengan C ++ yang diinstal secara default. Jadi, membuat proyek C ++ baru akan meminta Anda mengunduh komponen C ++ yang diperlukan.
sumber
Ini berfungsi untuk saya di Ubuntu 17.10 (Artful Aardvark):
sumber
Saya mengalami masalah ini saat membuat libgit2-0.23.4. Bagi saya masalahnya adalah bahwa C ++ compiler & paket terkait tidak diinstal dengan VS2015, oleh karena itu file "C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ vcvarsall.bat" hilang dan Cmake tidak dapat menemukan kompiler.
Saya mencoba secara manual membuat proyek C ++ di Visual Studio 2015 GUI ( C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe ) dan saat membuat proyek, saya mendapat prompt untuk mengunduh C ++ & paket terkait.
Setelah mengunduh paket yang diperlukan, saya dapat melihat vcvarsall.bat & Cmake dapat menemukan kompiler & berhasil dieksekusi dengan log berikut:
sumber
Saya memiliki kesalahan yang sama dengan CMake. Dalam kasus saya, saya telah menggunakan versi Visual Studio yang salah dalam dialog CMake awal di mana kita harus memilih kompiler Visual Studio.
Kemudian saya mengubahnya menjadi "Visual Studio 11 2012" dan semuanya bekerja. (Saya memiliki versi Visual Studio Ultimate 2012 di PC saya). Secara umum, coba masukkan versi Visual Studio versi lama di dialog konfigurasi CMake awal.
sumber
Bagi saya, masalah ini hilang di Windows ketika saya memindahkan proyek saya ke direktori induk yang lebih dangkal, yaitu ke:
C:\Users\spenc\Desktop\MyProjectDirectory
dari pada
C:\Users\spenc\Desktop\...\MyProjectDirectory
.Saya pikir sumber masalahnya adalah bahwa MSBuild memiliki batasan panjang jalur file hingga 260 karakter. Hal ini menyebabkan pengujian compiler dasar yang dilakukan CMake untuk membangun proyek yang dipanggil
CompilerIdCXX.vcxproj
gagal dengan kesalahan:C1083: Cannot open source file: 'CMakeCXXCompilerId.cpp'
karena panjang jalur file mis
C:\Users\spenc\Desktop\...\MyProjectDirectory\build\CMakeFiles\...\CMakeCXXCompilerId.cpp
melebihi batasan MAX_PATH.
CMake kemudian menyimpulkan bahwa tidak ada kompiler CXX.
sumber
Pastikan Anda telah memilih versi Visual Studio yang benar. Ini lebih rumit daripada yang terlihat karena Visual Studio 2015 sebenarnya adalah Visual Studio 14, dan begitu pula Visual Studio 2012 adalah Visual Studio 11. Saya salah memilih Visual Studio 15 yang sebenarnya adalah Visual Studio 2017, ketika saya menginstal 2015.
sumber
Tidak ada solusi di sini yang memecahkan masalah saya - hanya ketika saya menginstal Pembaruan Windows untuk runtime C universal.
Sekarang CMake berfungsi dan tidak ada lagi tautan yang hang dari Visual Studio.
Pembaruan untuk Universal C Runtime di Windows
sumber
Anda juga dapat memastikan bahwa Anda adalah pengguna sudo dan Anda memiliki akses BACA / TULIS di direktori tempat Anda bekerja. Saya memiliki masalah serupa di OS X, dan saya memperbaikinya hanya dengan masuk dalam mode sudo.
sumber
Kalau-kalau itu membantu orang seperti saya di masa depan:
Saya telah mengalami masalah ini selama 24 jam sekarang, pada 3 mesin 64-bit yang berbeda (Win7, Windows 8.1 VM dan laptop WIn 8.1) - ketika mencoba membangun WebKit dengan VS 2017.
Masalah sederhananya di sini adalah bahwa kompiler VC ++ (yaitu cl.exe dan DLL yang bergantung padanya) tidak terlihat oleh CMake. Sederhana. Dengan membuat folder VC ++ yang berisi binari tersebut terlihat oleh CMake dan prompt perintah kerja Anda (jika Anda menjalankan Cmake dari prompt perintah), voila! (Selain poin-poin penting yang dikemukakan oleh orang lain, di atas)
Bagaimanapun, setelah semua jenis perbaikan - seperti yang diposting di banyak forum ini - saya menemukan bahwa itu HANYA masalah memastikan bahwa konten variabel PATH tidak berantakan dengan beberapa jalur Visual Studio BIN dll; dan sebaliknya, menunjuk ke:
a) lokasi kompiler Anda (yaitu cl.exe untuk versi Visual Studio pilihan Anda), yang dalam kasus saya (menargetkan platform 64-bit, dan mengembangkan pada host 64-bit) adalah: C: \ Program Files (x86 ) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \ Hostx64 \ x64
b) dan sebagai tambahan, folder yang berisi DLL dependen yang disebut (yang bergantung pada cl.exe): api-ms-win-crt-runtime-l1-1-0.dll - yang di mesin saya adalah:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Remote Debugger \ x64
Kedua direktori ini ditambahkan ke variabel Jalur Sistem yang disederhanakan dan CUSTOM (bekerja di bawah prompt perintah pribadi Admin), menghapus "Tidak ada CMAKE_COMPILER yang dapat ditemukan" dan "Tidak ada CMAKE_CXX_COMPILER yang dapat ditemukan." kesalahan.
Semoga bisa membantu seseorang.
sumber
Saya mendapatkan kesalahan yang dilaporkan jika ccache diaktifkan, saat menggunakan generator Xcode CMake . Menonaktifkan ccache memperbaiki masalah saya. Di bawah ini saya menyajikan perbaikan / pemeriksaan yang berfungsi untuk MacOS, tetapi harus berfungsi serupa di platform lain.
Rupanya, dimungkinkan untuk menggunakan generator Xcode CMake (dan lainnya) juga dalam kombinasi dengan ccache, seperti yang dijelaskan di sini . Tapi saya sendiri tidak pernah mencobanya.
sumber
Saya memperbarui Visual Studio 2015 pemutakhiran 2 ke Visual Studio 2015 pemutakhiran 3, dan itu memecahkan masalah saya.
sumber
Saya memiliki masalah yang sama dengan cmake-gui (
No CMAKE_CXX_COMPILER could be found.
), saat menjalankan CMake dari baris perintah berfungsi dengan baik. Setelah menambahkan entri secara manualC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
ke variabel lingkungan PATH yang berhasil bagi saya.
sumber
Bagi saya itu berhasil menggunakan Prompt Perintah Pengembang yang datang dengan Visual Studio dan kemudian hanya
cd
untukyour/jcef/dir
dan menjalankancmake -G "Visual Studio 14 Win64" ..
sumber
Saya memiliki masalah yang sama.
Saya mencoba menginstal dlib di komputer saya dan itu memberi saya kesalahan ini. Tutorial yang disebutkan dalam pertanyaan mengarah ke mengunduh studio visual 2017. Saya menyelesaikan ini dengan menghapus instalasi VS 2017 dan menginstal VS 2015
Seseorang dapat menginstal VS 2015 melalui utas stackoverflow ini: Cara mengunduh Visual Studio Community Edition 2015 (bukan 2017)
sumber
Saya tahu pertanyaan ini tentang visual studio 2015. Saya menghadapi masalah ini dengan visual studio 2017. Ketika mencari di google saya mendarat di halaman ini. Setelah melihat 2,3 jawaban pertama saya menyadari ini adalah masalah dengan instalasi vc ++. Menginstal beban kerja "Pengembangan desktop dengan c ++" menyelesaikan masalah.
sumber
Lihat di Cmakelists.txt jika Anda menemukan ARM Anda perlu menginstal C ++ untuk 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"
Lalu masalahnya
Tidak ada CMAKE_COMPILER yang dapat ditemukan.
Tidak ada CMAKE_CXX_COMPILER yang dapat ditemukan.
Mungkin hilang kecuali Anda menentukan compiler c seperti clang, dan mungkin menginstal clang akan berfungsi untuk kepentingan lain.
Anda dapat menghapus opsional di cmakelists.txt dengan # before enable_language jika Anda tidak sedang mengompilasi untuk ARM.
sumber