CodeBlanks Logo Icon CodeBlanks

Ninja ve Make

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

main.cpp
# CMakeLists.txt
# cmake komutlarını ve Ninja yorumunu ekle

Örnek çözüm

main.cpp
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

Soru
cmake -G "____" .
Cevap
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.

İleri seviye bölümündeki tüm dersler