Bagaimana cara menggunakan CMake?

102

Saya mencoba menggunakan CMake untuk mengkompilasi opencv.

Saya membaca tutorial tetapi tidak mengerti apa itu file CMakeLists dan bagaimana itu terhubung ke gui CMake?

Juga tidak bisa mengerti apa itu makefile, apakah mereka sama dengan CMakeLists?

Dan file mana yang akhirnya saya buka dengan visual-studio?

lital maatuk
sumber
Jika pertanyaannya terkait dengan Windows, itu harus disebutkan di dalamnya (mungkin dengan windowstag)
Basile Starynkevitch
Mengenai CMake 3.13.3, platform Windows, dan IDE Visual Studio 2017, saya sarankan: wikihow.com/Use-CMake Regards.
George Theodosiou

Jawaban:

30

CMake mengambil file CMakeList, dan mengeluarkannya ke format build khusus platform, misalnya Makefile, Visual Studio, dll.

Anda menjalankan CMake di CMakeList terlebih dahulu. Jika Anda menggunakan Visual Studio, Anda dapat memuat proyek / solusi keluaran.

holtavolt
sumber
2
Apa itu Makefile? Di mana saya dapat menemukan file proyek / solusi untuk visualstudio?
lital maatuk
3
Setelah Anda menjalankan cmake (atau CMakeSetup dan menekan generate), Anda akan dapat menemukan Makefile (jika unix) atau file proyek di suatu tempat di pohon proyek. Lokasi dapat ditentukan di CMakeList. Berikut adalah presentasi singkat yang saya temukan di wiki CMake yang mungkin berguna bagi Anda: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake mengkonfigurasi seluruh proyek menggunakan format build pilihan Anda, yang berarti CMake mengatur semuanya sehingga Anda dapat menggunakan, misalnya, Visual Studio untuk dikompilasi. Secara default (setidaknya di linux), itu membuat proyek yang menggunakan Make sebagai gantinya. Make digunakan untuk benar-benar membangun proyek, bukan mengonfigurasi atau menyiapkannya. Jadi, pertama-tama Anda harus menggunakan CMake untuk menyiapkan proyek, lalu menjalankan Make untuk mengkompilasi dan membangun sesuatu.
leinaD_natipaC
156

Saya tidak tahu tentang Windows (tidak pernah menggunakannya), tetapi di sistem Linux Anda hanya perlu membuat direktori build (di direktori sumber teratas)

mkdir build-dir

masuk ke dalamnya

cd build-dir

lalu jalankan cmakedan arahkan ke direktori induk

cmake ..

dan akhirnya lari make

make

Perhatikan bahwa makedan cmakeadalah program yang berbeda. cmakeadalah Makefilegenerator, dan makeutilitasnya diatur oleh Makefilefile tekstual. Lihat cmake & buat halaman wikipedia.

NB: Pada Windows, cmakemungkin beroperasi sehingga mungkin perlu digunakan secara berbeda. Anda harus membaca dokumentasi (seperti yang saya lakukan untuk Linux)

Basile Starynkevitch
sumber
Apa perbedaan antara cmake dan make? apakah mereka program yang berbeda?
lital maatuk
4
Jawaban yang bagus; Saya tidak tahu cara mendapatkan file build di sub-direktori. Saya tidak mengerti mengapa dokumentasi resmi tidak menyebutkan ini.
TheBigB
Ini berfungsi di Linux, tetapi di Windows rusak saat mendeteksi compiler C / C ++. Ada ide bagaimana melakukan itu?
bartlomiej.n
Itu tergantung pada bagaimana Anda menyiapkan komputer tertentu . Periksa apakah PATHvariabel Anda sudah benar. BTW, saya tidak pernah menggunakan Windows dalam hidup saya (dan menulis program pertama saya pada tahun 1974)
Basile Starynkevitch
2
Begitu banyak suara positif dan jawabannya tidak menjelaskan apa-apa tentang Visual Studio.
Abyx
10

Ya, cmake dan make adalah program yang berbeda. cmakeadalah (di Linux) generator Makefile (dan Makefile -s adalah file yang menjalankan makeutilitas). Ada generator Makefile lain (khususnya konfigurasi dan autoconf dll ...). Dan Anda dapat menemukan program otomasi build lainnya (misalnya ninja ).

Basile Starynkevitch
sumber
Saya rasa ini agak membingungkan. cmake adalah generator sistem build, dan salah satu yang dapat dihasilkannya adalah makefiles (seperti di gnu.org/software/make ). Ada banyak sistem lain yang dapat dihasilkannya, dan itu bukan "generator Makefile". Di macos (dan mungkin di tempat lain), jika Anda menjalankan cmake --help, ini akan memberi Anda daftar panjang generator yang dimilikinya. Misalnya, cmake dapat menghasilkan proyek Xcode - tidak ada hubungannya dengan make.
James Moore
0

Mengenai CMake 3.13.3, platform Windows, dan IDE Visual Studio 2017, saya menyarankan panduan ini . Secara singkat saya sarankan:
1. Unduh cmake> unzip> jalankan.
2. Sebagai contoh unduh GLFW> unzip> buat di dalam folder Build .
3. Dalam cmake Jelajahi "Sumber"> Jelajahi "Bangun"> Konfigurasi dan Hasilkan.
4. Dalam Visual Studio 2017 Bangun Solusi Anda.
5. Dapatkan binari.
Salam.

George Theodosiou
sumber