CMake لـ C++: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في CMake: ما هو ولماذا نحتاجه

\n\n

CMake (Cross-Platform Make) هو نظام قوي ومتعدد المنصات لأتمتة بناء البرمجيات مفتوح المصدر. على عكس ملفات Makefile التقليدية، لا يقوم CMake ببناء المشروع مباشرة، بل يقوم بإنشاء ملفات بناء للأدوات الأصلية (Make, Ninja, Visual Studio, Xcode) بناءً على ملفات تكوين بسيطة CMakeLists.txt.

\n\n

لماذا نحتاج CMake؟

\n
    \n
  • التعددية المنصية: يمكن بناء نفس الكود على Windows و Linux و macOS دون تغيير التكوين.
  • \n
  • إدارة التبعيات: دعم مدمج للبحث عن المكتبات الخارجية وربطها (Boost, OpenCV, Qt وغيرها).
  • \n
  • المرونة: دعم مولدات مشاريع مختلفة (Visual Studio, Xcode, Ninja, Unix Makefiles).
  • \n
  • النمطية: إمكانية إنشاء مكتبات (ثابتة وديناميكية)، ملفات قابلة للتنفيذ، واختبارات.
  • \n
  • التكامل مع بيئات التطوير المتكاملة (IDE): بيئات التطوير الحديثة (CLion, VS Code, Qt Creator) تدعم CMake بشكل مدمج.
  • \n
\n\n

أصبح CMake المعيار الفعلي لمشاريع C++. تستخدمه شركات عملاقة مثل Google (TensorFlow, Chrome)، Microsoft (VS Code)، KDE، LLVM/Clang وغيرها الكثير.

\n\n

تثبيت CMake

\n\n

على عكس مكتبات Python، لا يتم تثبيت CMake عبر pip. إنه تطبيق مستقل. دعنا ننظر في التثبيت لأنظمة التشغيل الرئيسية:

\n\n

Windows

\n
    \n
  1. قم بتنزيل المثبت من الموقع الرسمي (اختر الإصدار الخاص بـ Windows — .msi أو .zip).
  2. \n
  3. قم بتشغيل التثبيت. تأكد من تحديد الخيار "Add CMake to the system PATH for all users".
  4. \n
  5. بعد التثبيت، تحقق: cmake --version في سطر الأوامر.
  6. \n
\n\n

Linux (Ubuntu/Debian)

\n
sudo apt update\nsudo apt install cmake\ncmake --version
\n\n

macOS (Homebrew)

\n
brew install cmake\ncmake --version
\n\n

التحقق من التثبيت

\n

بعد التثبيت، قم بتنفيذ الأمر في الطرفية:

\n
cmake --version\n# يجب أن يكون الناتج مشابهاً لـ:\n# cmake version 3.27.0
\n\n

بداية سريعة: أول مشروع باستخدام CMake

\n\n

لنقم بإنشاء مشروع بسيط "Hello World" باستخدام CMake.

\n\n

هيكل المشروع

\n
my_project/\n├── CMakeLists.txt\n└── main.cpp
\n\n

ملف main.cpp

\n
#include <iostream>\n\nint main() {\n    std::cout << "Hello, CMake!" << std::endl;\n    return 0;\n}
\n\n

ملف CMakeLists.txt

\n
cmake_minimum_required(VERSION 3.10)\nproject(HelloWorld VERSION 1.0 LANGUAGES CXX)\n\nadd_executable(hello main.cpp)
\n\n

بناء المشروع

\n
mkdir build\ncd build\ncmake ..\ncmake --build .\n./hello
\n\n

شرح:

\n
    \n
  • cmake_minimum_required — يحدد الحد الأدنى لإصدار CMake.
  • \n
  • project — يحدد اسم المشروع واللغة (CXX لـ C++).
  • \n
  • add_executable — ينشئ ملفًا قابلاً للتنفيذ من الملفات المصدرية.
  • \n
\n\n

الأساليب والوظائف الأساسية في CMake

\n\n

1. cmake_minimum_required()

\n

الوصف: يحدد الحد الأدنى لإصدار CMake المطلوب لبناء المشروع. إذا كان إصدار CMake أقل من المحدد، فسيتم عرض خطأ.

\n

المعلمات:

\n
    \n
  • VERSION — الإصدار بالتنسيق major.minor[.patch[.tweak]]
  • \n
  • FATAL_ERROR — اختياري، يسبب خطأ فادحًا عند عدم تطابق الإصدار
  • \n
\n

مثال:

\n
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
\n\n

2. project()

\n

الوصف: يحدد اسم المشروع ومعلماته. يجب أن

توصيات