CodeBlanks Logo Icon CodeBlanks

find_package

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

main.cpp
# CMakeLists.txt
# cmake_minimum_required, project, find_package ve link ekle

Örnek çözüm

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

Soru
____(Threads REQUIRED)
Cevap
find_package(Threads REQUIRED)

Açıklama: find_package(Threads REQUIRED) iş parçacığı kütüphanesini bulur.

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