find_package
- C++ kursu
- İleri seviye
- Ders 45/83
- 5 dk
find_package ile kütüphane bulmayı öğrenirsin.
find_package nedir?
find_package komutu sistemde kurulu bir kütüphaneyi bulur ve kullanıma hazırlar. Bulunan kütüphane, imported target adı verilen hazır hedefler biçiminde sunulur. Bu hedefleri target_link_libraries ile kendi hedefine bağlarsın.
Örnek: find_package(Threads REQUIRED) sistemdeki iş parçacığı kütüphanesini bulur. Sonra target_link_libraries(myapp PRIVATE Threads::Threads) ile bağlarsın. REQUIRED kelimesi kütüphane bulunamazsa derlemenin hata vermesini sağlar. Başlık ve bağlama yolları otomatik olarak imported target içinde tanımlıdır.
Yaygın find_package kullanımları
Gerçek projelerde en sık kullanılan kütüphaneler: find_package(Boost), find_package(OpenCV), find_package(Qt6). Her biri kendi imported target'lerini sunar: Boost::system, Qt6::Core gibi.
Örnek: find_package(Boost REQUIRED COMPONENTS system) Boost.system bileşenini arar. target_link_libraries(myapp PRIVATE Boost::system) ile bağlarsın. COMPONENTS kelimesi yalnızca istenen alt kütüphaneleri arar. Bulunan target'ler başlık yollarını da içerir; bu yüzden ek include_directories çağrısı gerekmez.
Uygulama find_package ile bağla
Bir CMakeLists.txt yaz. cmake_minimum_required(VERSION 3.20) ve project(MyApp) ekle. find_package(Threads REQUIRED) ile iş parçacığı kütüphanesini bul. add_executable(myapp main.cpp) tanımla. target_link_libraries(myapp PRIVATE Threads::Threads) ile bağla.
Başlangıç kodu
# CMakeLists.txt
# cmake_minimum_required, project, find_package ve link ekleÖrnek çözüm
cmake_minimum_required(VERSION 3.20)
project(MyApp)
find_package(Threads REQUIRED)
add_executable(myapp main.cpp)
target_link_libraries(myapp PRIVATE Threads::Threads)Beklenen çıktı
Bağımlılık hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 find_package ne yapar?
- Sistemde kurulu kütüphaneyi bulur Doğru cevap
- Yeni bir kütüphane oluşturur
- Derleyiciyi ayarlar
- Kaynak dosya üretir
Açıklama: find_package sistemdeki kütüphaneyi arar ve kullanıma hazırlar.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
find_package(Threads) |
Kütüphaneyi bulur |
REQUIRED |
Bulunamazsa hata verir |
Threads::Threads |
Imported target |
target_link_libraries |
Hedefe bağlar |
3 find_package komutunu tamamla
____(Threads REQUIRED)
find_package(Threads REQUIRED)
Açıklama: find_package(Threads REQUIRED) iş parçacığı kütüphanesini bulur.