Pesan kesalahan itu
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".
atau
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!
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 telah menginstal kompiler / IDE dan dapat mengkompilasi program lain sekali (langsung tanpa CMake)
- Anda memiliki versi CMake terbaru
- Anda memiliki hak akses pada drive yang Anda inginkan agar CMake membuat lingkungan build Anda
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
> rmdir /s /q VS2015
> mkdir VS2015
> cd VS2015
Bash shell
$ rm -rf MSYS
$ mkdir MSYS
$ cd MSYS
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
> cmake ..
-- Building for: Visual Studio 14 2015
...
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 di CMakeFiles\[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 :
> cmake --help
> cmake -G "Visual Studio 14 2015" ..
Jika itu tidak membantu, cobalah untuk mengatur variabel lingkungan Visual Studio terlebih dahulu (jalur dapat bervariasi):
> "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
> cmake ..
atau gunakan pintasan di Developer Command Prompt for VS2015
Start Menu Windows di bawah All 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 dengan msys.bat
dan hanya mencoba menelepon secara langsunggcc
$ gcc
gcc.exe: fatal error: no input files
compilation terminated.
Di sini ia menemukan gcc
dan mengeluh bahwa saya tidak memberikan parameter apa pun untuk dikerjakan.
Jadi berikut ini seharusnya berhasil:
$ cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
$ make
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)
$ 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
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 MinGW
Masih 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
$ cmake -DCMAKE_C_COMPILER=/c/MinGW/bin/gcc.exe -DCMAKE_CXX_COMPILER=/c/MinGW/bin/g++.exe ..
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 kompiler
Latar 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
, dan objcopy
).