0Pricing
C++ Academy · Ders

Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE

Hedefleri tanımlayın, kütüphaneleri bağlayın ve PUBLIC, PRIVATE, INTERFACE görünürlüğünü doğru kullanın

Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Hedefler Derleme Birimidir

Modern CMake, hedefler etrafında şekillenir: çalıştırılabilir dosyalar, kitaplıklar veya yalnızca arayüz kümeleri. Özellikler hedeflere bağlanır ve bağlama yoluyla aktarılır.

Hedef Ekleme

add_executable, add_library veya add_library(... INTERFACE) kullanın.

add_executable(myapp src/main.cpp)
add_library(mylib STATIC src/lib.cpp)
add_library(headers INTERFACE)

target_link_libraries

Bir hedefi kitaplıklara bağlayın. Üçüncü bağımsız değişken görünürlüğü denetler.

target_link_libraries(myapp PRIVATE mylib)

PUBLIC PRIVATE INTERFACE Görünürlüğü

Üç görünürlük düzeyi vardır; bunlar bağımlılıkların bu hedefi kullananlara aktarılıp aktarılmayacağını denetler:

  • PRIVATE — bu hedefi oluşturmak için kullanılır; dışarıya açılmaz
  • INTERFACE — kullananlar tarafından kullanılır; bu hedef tarafından kullanılmaz
  • PUBLIC — her ikisi

Aktarımı Görselleştirme

mylib, fmt kitaplığına PUBLIC olarak bağlanırsa mylib ile bağlanan tüm hedefler fmt kitaplığının ekleme dizinlerini de alır. PRIVATE, kullananların fmt kitaplığını göremeyeceği anlamına gelir.

target_include_directories

Ekleme dizinlerini hedef başına ayarlayın. Kullananların #include edeceği başlık dosyaları için PUBLIC, iç başlık dosyaları için PRIVATE kullanın.

target_include_directories(mylib
    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
    PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)

target_compile_definitions

Hedef için ön işlemci makrolarını ayarlayın.

target_compile_definitions(mylib PUBLIC MYLIB_VERSION_MAJOR=1)

target_compile_features

Belirli dil özelliklerini (örneğin bir C++ standardını) isteyin.

target_compile_features(mylib PUBLIC cxx_std_20)

Arayüz Kitaplıkları

Bir INTERFACE kitaplığının derlenmiş çıktısı yoktur. Kullananların devralması gereken derleme seçeneklerini, başlık dosyalarını veya bağlamaları bir araya getirmek için kullanın.

add_library(strict_warnings INTERFACE)
target_compile_options(strict_warnings INTERFACE -Wall -Wextra)

# now any target can opt in
target_link_libraries(myapp PRIVATE strict_warnings)

Yalnızca Başlıklardan Oluşan Kitaplıklar

Yalnızca başlıklardan oluşan kitaplıklar için bir INTERFACE kitaplığı bildirin ve ekleme dizinini INTERFACE olarak ayarlayın.

Takma Adlar

Daha anlaşılır bağlama komutları için ad alanlı takma adlar oluşturun.

add_library(MyProject::mylib ALIAS mylib)
target_link_libraries(consumer PRIVATE MyProject::mylib)

Bağlama Sırası

CMake genellikle bağlama sırasını doğru şekilde çözer. Zor, döngüsel durumlarda --start-group bağlayıcı seçeneğini kullanın veya kitaplık yapınızı yeniden düzenleyin.

Yaygın Hata: Global include_directories

Global include_directories komutundan kaçının. Başlık dosyalarının yalnızca belirli hedeflere bağlanması için target_include_directories kullanın.

Kısa Denetim

mylib ile bağlanan bir hedef için target_link_libraries(mylib PUBLIC fmt) ne anlama gelir?

Özet

Modern CMake, hedefleri iş birimi olarak kullanır. Özellikleri target_* komutlarıyla ayarlayın ve özelliklerin kullananlara nasıl aktarılacağını denetlemek için PUBLIC/PRIVATE/INTERFACE kullanın.

Sıkça Sorulan Sorular

“Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE” dersi ücretsiz mi?

Evet — “Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE” dersinde ne öğreneceğim?

Hedefleri tanımlayın, kütüphaneleri bağlayın ve PUBLIC, PRIVATE, INTERFACE görünürlüğünü doğru kullanın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. CMake Proje Düzeni ve CMakeLists.txt
  2. Hedefler, Bağlama ve Görünürlük: PUBLIC, PRIVATE
  3. Bağımlılıklar İçin vcpkg ve Conan Kullanımı
  4. IDE Dosyaları Oluşturma ve Platformlar Arası Derlemeler
← C++ Academy Sayfasına Dön