Multi-project
- C++ kursu
- İleri seviye
- Ders 46/83
- 5 dk
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
# CMakeLists.txt (kok)
# cmake_minimum_required, project ve add_subdirectory ekleÖrnek çözüm
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
____(lib)
add_subdirectory(lib)
Açıklama: add_subdirectory(lib) lib dizinini yapıya katar.