Kesalahan CMake di CMakeLists.txt: 30 (proyek): CMAKE_C_COMPILER tidak dapat ditemukan


105

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:

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


Anda dapat mengkonfigurasi proyek baik untuk Visual studio dengan kompilernya atau untuk Makefiles dengan gcc. Metode apa yang sudah Anda coba?
Tsyvarev

Apa perintah cmake yang Anda masukkan?
bames53

Apakah Anda menggunakan CMake terbaru? Generator apa yang Anda gunakan? Apakah Anda menjalankan perintah dari prompt perintah Visual Studio 2015 (sehingga memiliki set variabel lingkungan kompilator)?
drescherjm

1
@ bames53 Hanya ingin menambahkan baris perintah yang sesuai untuk @Caio Fontes untuk mencoba: cmake .. -G "Visual Studio 14 2015"atau cmake .. -G "MSYS Makefiles"(jika gccberarti MinGW). 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.
Florian

Jawaban:


97

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

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

  2. Apa sebenarnya yang gagal?

    Di direktori keluaran build sebelumnya, lihat CMakeFiles\CMakeError.logpesan kesalahan apa pun yang masuk akal bagi Anda atau coba buka / kompilasi proyek uji yang dibuat di CMakeFiles\[Version]\CompilerIdC| CompilerIdCXXlangsung dari baris perintah (seperti yang ditemukan di log kesalahan).

CMake tidak dapat menemukan Visual Studio

  1. Coba pilih versi generator yang benar :

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

  1. Anda memulai bashshell MSys dengan msys.batdan hanya mencoba menelepon secara langsunggcc

    $ gcc
    gcc.exe: fatal error: no input files
    compilation terminated.
    

    Di sini ia menemukan gccdan 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.

  2. Jika masih tidak berfungsi, coba setel CXXjalur 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-makeprogram yang didistribusikan dengan MinGW

  3. 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.exedi 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).


1
Sekadar pemberitahuan, beberapa tautan dokumen cmake mengarah ke versi CMake yang benar-benar lama, ingatlah untuk menggunakan pemilih versi agar sesuai dengan versi yang Anda miliki di komputer Anda (misalnya, jika Anda tidak melihat platform yang lebih baru terdaftar itu yang Anda butuhkan).
jrh

42

Untuk Ubuntu, instal hal-hal di bawah ini:

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

21

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.

Masukkan deskripsi gambar di sini


13

Saya juga mengalami kesalahan ini saat bekerja dengan CMake:

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

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.



5

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:

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
Ini berhasil untuk saya. Membuat proyek C ++ secara manual untuk menginstal paket yang diperlukan berhasil.
Melaz

5

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.


4

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


2

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.



1

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.


1

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.


1

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.

# 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
Saya dapat mengatasi masalah yang sama dengan memastikan bahwa keluaran "xcode-select -p" mengarah ke instalasi Xcode saya. Dalam kasus saya menginstal Xcode dan menjalankan "xcode-select -r" sudah cukup.
TomTasche

0

Saya memperbarui Visual Studio 2015 pemutakhiran 2 ke Visual Studio 2015 pemutakhiran 3, dan itu memecahkan masalah saya.


Solusi ini diperlukan di tempat saya bekerja setelah mereka mendorong pembaruan OS Windows. Saya telah menggunakan setidaknya 2 solusi di halaman ini untuk memperbaiki kesalahan. Kesalahan dapat muncul dalam berbagai kondisi, jadi inilah mengapa ada beberapa jawaban yang berbeda, namun dapat diterapkan.
Natalie Cottrill

0

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 manual

C:\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.


0

Bagi saya itu berhasil menggunakan Prompt Perintah Pengembang yang datang dengan Visual Studio dan kemudian hanya cduntuk your/jcef/dirdan menjalankancmake -G "Visual Studio 14 Win64" ..


0

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)


0

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.

Pengembangan desktop dengan c ++


0

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"

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.