CodeBlanks Logo Icon CodeBlanks

Multi-project

CMake ile çoklu proje yapısını öğrenirsin.

Multi-project yapısı

Büyük projeler birden çok alt dizine bölünür: her biri kendi CMakeLists.txt'sine sahiptir. Üst düzey dosya add_subdirectory komutuyla alt dizinleri işin içine katar. Bu, kodun modüler kalmasını sağlar.

Tipik yapı: kök dizinde CMakeLists.txt, lib/ alt dizininde kütüphane, app/ alt dizininde uygulama bulunur. Kök dosya add_subdirectory(lib) ve add_subdirectory(app) çağırır. Her alt dizinin CMakeLists'i kendi hedeflerini tanımlar. Üst dizin ile alt dizin arasında değişken ve hedef paylaşımı otomatiktir.

Kütüphane ve uygulama ayrımı

Modüler bir projede lib/ dizini add_library ile bir kütüphane tanımlar. app/ dizini add_executable ile uygulamayı tanımlar ve kütüphaneye target_link_libraries ile bağlanır. Bu, kütüphanenin başka projelerde de kullanılabilmesini sağlar.

Örnek: lib/CMakeLists.txt içinde add_library(mylib utils.cpp). app/CMakeLists.txt içinde add_executable(myapp main.cpp) ve target_link_libraries(myapp PRIVATE mylib). Kök dosya her ikisini add_subdirectory ile çağırır. Böylece bağımlılık yönü net olur: app, lib'e bağlıdır; lib bağımsızdır.

Uygulama Çoklu proje kök dosyasını yaz

Kök CMakeLists.txt yaz. cmake_minimum_required(VERSION 3.20) ve project(MyApp) ekle. add_subdirectory(lib) ve add_subdirectory(app) ile iki alt dizini yapıya kat.

Başlangıç kodu

main.cpp
# CMakeLists.txt (kok)
# cmake_minimum_required, project ve add_subdirectory ekle

Örnek çözüm

main.cpp
cmake_minimum_required(VERSION 3.20)
project(MyApp)
add_subdirectory(lib)
add_subdirectory(app)

Beklenen çıktı

Proje yapısı hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 add_subdirectory ne yapar?

  • Yeni bir kütüphane oluşturur
  • Alt dizinin CMakeLists'ini işler Doğru cevap
  • Çıktı dizinini ayarlar
  • Derleyiciyi değiştirir

Açıklama: add_subdirectory alt dizinin CMakeLists.txt'sini işin içine katar.

2 Parçayı rolüne eşle

Kavram Anlamı
add_subdirectory(lib) lib dizinini ekler
add_subdirectory(app) app dizinini ekler
lib/CMakeLists.txt Kütüphane hedefi
app/CMakeLists.txt Uygulama hedefi

3 add_subdirectory komutunu tamamla

Soru
____(lib)
Cevap
add_subdirectory(lib)

Açıklama: add_subdirectory(lib) lib dizinini yapıya katar.

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