C++ Academy · درس

الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE

عرّف الأهداف واربط المكتبات، واستخدم إتاحة PUBLIC وPRIVATE وINTERFACE على نحو صحيح.

الدرس 2 من 415 خطوة

الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

الأهداف هي وحدة البناء

يرتكز CMake الحديث على الأهداف، وهي ملفات تنفيذية أو مكتبات أو مجموعات مخصّصة للواجهة فقط. تُلحَق الخصائص بالأهداف وتنتقل عبر الربط.

إضافة الأهداف

استخدم add_executable أو add_library أو add_library(... INTERFACE).

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

target_link_libraries

اربط هدفًا بالمكتبات. ويتحكم المعامل الثالث في نطاق الإتاحة.

target_link_libraries(myapp PRIVATE mylib)

نطاق الإتاحة PUBLIC وPRIVATE وINTERFACE

ثلاثة مستويات للإتاحة، تتحكم في انتقال التبعيات إلى مستخدمي هذا الهدف:

  • PRIVATE — تُستخدم لبناء هذا الهدف ولا تكون مكشوفة
  • INTERFACE — يستخدمها المستهلكون ولا يستخدمها هذا الهدف
  • PUBLIC — الحالتان معًا

تصوير انتقال الخصائص

إذا ربط mylib المكتبة fmt بصفتها PUBLIC، فسيحصل أي هدف يربط mylib أيضًا على أدلة التضمين الخاصة بـ fmt. أما PRIVATE فتعني أن المستهلكين لا يرون fmt.

target_include_directories

اضبط أدلة التضمين لكل هدف. استخدم PUBLIC للترويسات التي سيضمّنها المستهلكون باستخدام #include، واستخدم PRIVATE للترويسات الداخلية.

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

target_compile_definitions

اضبط وحدات الماكرو الخاصة بالمعالج القبلي للهدف.

target_compile_definitions(mylib PUBLIC MYLIB_VERSION_MAJOR=1)

target_compile_features

اطلب ميزات لغة محددة، مثل معيار C++ معين.

target_compile_features(mylib PUBLIC cxx_std_20)

مكتبات الواجهة

لا تنتج مكتبة INTERFACE مخرجات مترجمة. استخدمها لتجميع خيارات الترجمة أو الترويسات أو عمليات الربط التي ينبغي أن يرثها المستهلكون.

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)

المكتبات التي تقتصر على الترويسات

بالنسبة إلى المكتبات التي تقتصر على الترويسات، صرّح عن مكتبة INTERFACE واضبط مجلد التضمين بصفته INTERFACE.

الأسماء المستعارة

أنشئ أسماء مستعارة ذات نطاقات اسمية للحصول على أوامر ربط أوضح.

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

ترتيب الربط

يحلّ CMake عادةً ترتيب الربط بشكل صحيح. وفي الحالات الدائرية المعقدة، استخدم راية الرابط --start-group أو أعد هيكلة مكتباتك.

خطأ شائع: include_directories العام

تجنّب الأمر العام include_directories. استخدم target_include_directories لكي ترتبط الترويسات بأهداف محددة فقط.

تحقق سريع

ماذا يعني target_link_libraries(mylib PUBLIC fmt) لهدف يربط mylib؟

مراجعة

يستخدم CMake الحديث الأهداف كوحدة للعمل. اضبط الخصائص باستخدام أوامر target_*، واستخدم PUBLIC/PRIVATE/INTERFACE للتحكم في كيفية انتقال الخصائص إلى المستهلكين.

البدء مجانًا

تعلم C++ مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

الأسئلة الشائعة

هل درس «الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE» مجاني؟

نعم — نص درس «الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE»؟

عرّف الأهداف واربط المكتبات، واستخدم إتاحة PUBLIC وPRIVATE وINTERFACE على نحو صحيح. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. هيكل مشروع CMake وCMakeLists.txt
  2. الأهداف والربط وإتاحة الوصول: ‏PUBLIC وPRIVATE
  3. استخدام vcpkg وConan لإدارة التبعيات
  4. إنشاء ملفات IDE وبناءات متعددة المنصات
← العودة إلى C++ Academy