0Pricing
C++ Academy · درس

هيكل مشروع CMake وCMakeLists.txt

نظّم شجرات المصدر، واكتب ملفات CMakeLists الأساسية.

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

لماذا CMake؟

يُعدّ CMake مولّد نظام البناء المعتمد فعليًا للغة C++. فهو ينتج ملفات مشاريع لـ Make وNinja وVisual Studio وXcode انطلاقًا من وصف واحد.

ملف CMakeLists.txt الأدنى

أصغر ملف CMakeLists.txt مفيد لإنشاء ملف تنفيذي واحد.

cmake_minimum_required(VERSION 3.20)
project(MyApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(myapp main.cpp)

البناء خارج شجرة المصدر

أنشئ البناء دائمًا في مجلد منفصل، للحفاظ على شجرة المصدر نظيفة.

# from project root
cmake -B build
cmake --build build

التخطيط القياسي للمشروع

هيكل منظم:

  • CMakeLists.txt
  • src/ — ملفات المصدر
  • include/ — الترويسات العامة
  • tests/ — الاختبارات
  • third_party/ — التبعيات المضمّنة

إضافة المجلدات الفرعية

انتقل بشكل ت递جي إلى المجلدات الفرعية التي تحتوي على ملفات CMakeLists.txt الخاصة بها.

# top-level
add_subdirectory(src)
add_subdirectory(tests)

المتغيرات والخصائص

اضبط المتغيرات باستخدام set. واقرأها باستخدام ${var}. ومن المتغيرات الشائعة: CMAKE_BUILD_TYPE وCMAKE_CXX_FLAGS.

set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)

العثور على الملفات ديناميكيًا

استخدم file(GLOB ...) في النماذج الأولية السريعة. أما في المشاريع الإنتاجية، فأدرج ملفات المصدر صراحةً لكي يعيد CMake التشغيل عند إضافة ملفات جديدة.

# Discouraged for production
file(GLOB SOURCES "src/*.cpp")

# Preferred
add_executable(myapp src/main.cpp src/util.cpp)

إعدادات البناء

الإعدادات الشائعة: Debug وRelease وRelWithDebInfo وMinSizeRel. اضبطها باستخدام -DCMAKE_BUILD_TYPE=Release.

cmake -B build -DCMAKE_BUILD_TYPE=Release

تحذيرات المصرّف

فعّل التحذيرات باعتبارها خصائص للهدف، لضمان قابلية النقل بين المصرّفات.

target_compile_options(myapp PRIVATE
    $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
    $<$<CXX_COMPILER_ID:MSVC>:/W4>
)

أسلوب CMake الحديث

فضّل الأوامر القائمة على الأهداف، مثل target_*، على الأوامر العامة. فهي تحصر الخصائص بوضوح في أهداف محددة.

CMakePresets.json (CMake 3.19+)

عرّف إعدادات قابلة لإعادة الاستخدام في CMakePresets.json، بحيث يشاركها أعضاء الفريق.

تثبيت المشروع

استخدم أوامر install لنسخ الملفات التنفيذية والمكتبات والترويسات إلى مسارات التثبيت.

install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)

تحقق سريع

ما نمط المجلدات الموصى به عند تشغيل CMake؟

مراجعة

CMake هو مولّد نظام البناء القياسي لمشاريع C++. اكتب ملف CMakeLists.txt، وأنشئ البناء خارج شجرة المصدر، واستخدم الأوامر القائمة على الأهداف. استخدم الإعدادات المسبقة للإعدادات المشتركة، والخصائص لرايات المصرّف.

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

هل درس «هيكل مشروع CMake وCMakeLists.txt» مجاني؟

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

ماذا ستتعلم في «هيكل مشروع CMake وCMakeLists.txt»؟

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

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

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

كم من الوقت يستغرق درس «هيكل مشروع CMake وCMakeLists.txt»؟

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

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

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

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

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