Ninja ve Make
- C++ kursu
- İleri seviye
- Ders 47/83
- 5 dk
Ninja ve Make generator'larını öğrenirsin.
Ninja ve Make nedir?
CMake bir üreteç (generator) seçer: en yaygın iki seçenek Make ve Ninja'dır. Make evrensel ve her Unix'te bulunur; Ninja ise özellikle büyük projelerde daha hızlı artımlı derleme (incremental build) yapar.
Üreteci -G bayrağıyla belirlersin: cmake -G "Ninja" . ya da cmake -G "Unix Makefiles" .. Üretilen dosyaları derlemek için Make'te make, Ninja'da ninja komutunu çalıştırırsın. Ninja paralel derlemeyi varsayılan olarak yapar; Make'te make -j4 gibi açık paralellik gerekir.
CMAKE_BUILD_TYPE
CMAKE_BUILD_TYPE değişkeni derleme türünü belirler: Debug (hata ayıklama sembolleri, eniyileme yok), Release (tam eniyileme), RelWithDebInfo (eniyileme + sembol). Komut satırından cmake -DCMAKE_BUILD_TYPE=Release . biçiminde ayarlanır.
Örnek: cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release . üretim derlemesi için Ninja dosyaları üretir. Ardından ninja çalıştırınca program eniyilenmiş olarak derlenir. CMakeLists.txt içinde if(CMAKE_BUILD_TYPE STREQUAL "Debug") koşuluyla derleme türüne göre farklı komutlar yazabilirsin. Bu, tek yapı dosyasıyla hem geliştirme hem üretim derlemesi yapmayı sağlar.
Uygulama Üretim derlemesi yapılandırması yaz
Bir CMakeLists.txt yaz. cmake_minimum_required(VERSION 3.20) ve project(MyApp) ekle. add_executable(myapp main.cpp) tanımla. Dosyanın sonuna # cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release . yorumunu ekle.
Başlangıç kodu
# CMakeLists.txt
# cmake komutlarını ve Ninja yorumunu ekleÖrnek çözüm
cmake_minimum_required(VERSION 3.20)
project(MyApp)
add_executable(myapp main.cpp)
# cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release .Beklenen çıktı
Derleme hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Üreteç adını tamamla
cmake -G "____" .
cmake -G "Ninja" .
Açıklama: cmake -G "Ninja" Ninja build dosyalarını üretir.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
cmake -G "Ninja" |
Ninja üretir |
cmake -G "Unix Makefiles" |
Makefile üretir |
ninja |
Ninja ile derler |
make -j4 |
Paralel Make derler |
3 Ninja neden tercih edilir?
- Daha küçük dosya üretir
- Daha az kod gerektirir
- Daha hızlı artımlı derleme yapar Doğru cevap
- Her sistemde varsayılan
Açıklama: Ninja, özellikle büyük projelerde artımlı derlemeyi hızlandırır.