CMake'i nasıl kullanırım?


103

Opencv'yi derlemek için CMake kullanmaya çalışıyorum.

Öğreticiyi okuyorum ancak CMakeLists dosyalarının ne olduğunu ve CMake'nin kullanıcı arayüzüne nasıl bağlı olduğunu anlayamıyorum?

Ayrıca makefile nedir anlayamadım, CMakeLists aynı mı?

Ve sonunda visual-studio ile açtığım dosya hangisi?


Soru Windows ile windows
ilgiliyse

CMake 3.13.3, platform Windows ve IDE Visual Studio 2017 ile ilgili olarak şunu öneririm: wikihow.com/Use-CMake Regards.
George Theodosiou

Yanıtlar:


31

CMake, bir CMakeList dosyası alır ve bunu platforma özgü bir derleme biçimine (ör. Makefile, Visual Studio, vb.) Verir.

Önce CMakeList'te CMake'i çalıştırırsınız. Visual Studio'daysanız, çıktı projesini / çözümünü yükleyebilirsiniz.


2
Makefile nedir? Visualstudio için proje / çözüm dosyasını nerede bulabilirim?
lital maatuk

3
Cmake'yi (veya CMakeSetup'ı çalıştırıp oluştur'a tıkladıktan sonra), Makefile'ı (unix ise) veya proje dosyalarını proje ağacında bir yerde bulabilmelisiniz. Konum CMakeList'te belirtilebilir. İşte CMake wiki'sinde bulduğum kısa bir sunum faydalı bulabilir: elpauer.org/stuff/learning_cmake.pdf
holtavolt

2
CMake, seçtiğiniz bir derleme biçimini kullanarak tüm projeyi yapılandırır, yani derlemek için örneğin Visual Studio'yu kullanabilmeniz için her şeyi ayarlar. Varsayılan olarak (en azından linux üzerinde), bunun yerine Make kullanan bir proje yapar. Make, projeyi yapılandırmak veya kurmak için değil, aslında projeyi oluşturmak için kullanılır. Bu yüzden önce projeyi kurmak için CMake kullanmanız, ardından bir şeyler derlemek ve inşa etmek için Make'i çalıştırmanız gerekir.
leinaD_natipaC

156

Windows'u bilmiyorum (hiç kullanmadım), ancak bir Linux sisteminde sadece bir yapı dizini oluşturmanız gerekir (en üst kaynak dizinde)

mkdir build-dir

içine gir

cd build-dir

sonra çalıştırın cmakeve üst dizini işaret edin

cmake ..

ve sonunda koş make

make

Dikkat edin makeve cmakefarklı programlar. cmakebir Makefilejeneratördür ve makeyardımcı program bir Makefilemetin dosyası tarafından yönetilir . Cmake bakın & yapmak wikipedia sayfalarına.

NB: Windows'ta cmakeçalışabilir, bu nedenle farklı kullanılması gerekebilir. Belgeleri okumanız gerekecek (Linux için yaptığım gibi)


Cmake ve make arasındaki fark nedir? farklı programlar mı?
lital maatuk

4
Mükemmel cevap; Derleme dosyalarını bir alt dizine nasıl alacağımı bulamadım. Resmi belgelerin neden bundan bahsetmediğini anlamıyorum.
TheBigB

Bu, Linux altında çalışır, ancak Windows'ta C / C ++ derleyicisini algılamayı bozar. Bunu nasıl yapacağına dair bir fikrin var mı?
bartlomiej.n

Bu nasıl bağlıdır özellikle bilgisayar ayarlandı. Senin olmadığını kontrol PATHdeğişkeni doğrudur. BTW, hayatımda hiç Windows kullanmadım (ve ilk programımı 1974'te yazdım)
Basile Starynkevitch

2
Çok fazla olumlu oy ve yanıt Visual Studio hakkında hiçbir şey söylemiyor.
Abyx

10

Evet, cmake ve make farklı programlardır. cmake(Linux'ta) bir Makefile oluşturucusudur (ve Makefile -s makeyardımcı programı çalıştıran dosyalardır ). Başka Makefile üreteçleri de vardır (özellikle configure ve autoconf vs ...). Ve başka inşa otomasyon programları da bulabilirsiniz (örneğin ninja ).


Bunun biraz kafa karıştırıcı olduğunu düşünüyorum. cmake bir yapı sistemi oluşturucusudur ve oluşturabileceği şeylerden biri makefiles'dır ( gnu.org/software/make'de olduğu gibi ). Yine de üretebileceği başka birçok sistem var ve bunlar "Makefile üreteçleri" değiller. Macos'da (ve muhtemelen başka her yerde), cmake --help komutunu çalıştırırsanız, size sahip olduğu jeneratörlerin uzun bir listesini verecektir. Örneğin cmake, Xcode projeleri oluşturabilir - make ile hiçbir ilgisi yoktur.
James Moore

0

CMake 3.13.3, platform Windows ve IDE Visual Studio 2017 ile ilgili olarak bu kılavuzu öneriyorum . Kısaca şunu öneririm:
1. cmake dosyasını indirin> unzip> çalıştırın.
2. Örnek olarak GLFW'yi indirin> açın> klasör Oluştur içinde oluşturun .
3. cmake'da "Kaynak"> Gözat "Oluştur"> Yapılandır ve Oluştur.
4. Visual Studio 2017'de Çözümünüzü Oluşturun.
5. İkilileri alın.
Saygılarımızla.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.