CMake Variables
- متغيرات CMake
متغيرات CMake هي أساس نظام البناء CMake. فهي تسمح بتخصيص عملية البناء، وتحديد الخيارات، وتخزين المعلومات التي يستخدمها نظام البناء. فهم هذه المتغيرات أمر بالغ الأهمية لأي شخص يعمل مع CMake، سواء كان مطورًا مبتدئًا أو خبيرًا. هذه المقالة ستشرح بالتفصيل أنواع متغيرات CMake، وكيفية تعريفها، واستخدامها، وكيفية تأثيرها على عملية البناء.
أنواع متغيرات CMake
توجد أنواع مختلفة من متغيرات CMake، ولكل منها خصائصه واستخداماته:
- المتغيرات العادية: هذه هي المتغيرات الأكثر شيوعًا، ويمكن أن تخزن أي سلسلة نصية. يتم استخدامها لتخزين المسارات، والخيارات، وأي معلومات أخرى تحتاجها عملية البناء. مثال: CMAKE_INSTALL_PREFIX
- المتغيرات المخزنة مؤقتًا: يتم تعريف هذه المتغيرات داخل نطاق معين (مثل دالة أو ملف CMake). تختفي قيمتها عند الخروج من هذا النطاق.
- المتغيرات ذات القيمة الناتجة: يتم تعريف هذه المتغيرات تلقائيًا بواسطة CMake بناءً على بعض الشروط أو العمليات. مثال: CMAKE_CXX_COMPILER الذي يحدد المترجم المستخدم لـ C++.
- المتغيرات المخصصة: هي المتغيرات التي يعرفها المستخدم لتلبية احتياجات المشروع الخاصة.
تعريف متغيرات CMake
هناك عدة طرق لتعريف متغيرات CMake:
- باستخدام الأمر set: هذا هو الأسلوب الأكثر شيوعًا.
```cmake set(MY_VARIABLE "value") ```
- من سطر الأوامر: يمكن تمرير المتغيرات إلى CMake من سطر الأوامر عند تشغيل الأمر cmake.
```bash cmake -DMY_VARIABLE="value" . ```
- عن طريق ملفات التكوين: يمكن تحديد المتغيرات في ملفات CMakeLists.txt.
استخدام متغيرات CMake
يمكن استخدام متغيرات CMake في العديد من السياقات:
- في أوامر CMake: يمكن استخدام المتغيرات كقيم لمعلمات الأوامر.
```cmake add_executable(my_program main.cpp) target_link_libraries(my_program ${MY_LIBRARY}) ```
- في الشروط: يمكن استخدام المتغيرات في عبارات if للتحكم في عملية البناء.
```cmake if(MY_VARIABLE) message(STATUS "MY_VARIABLE is defined") endif() ```
- للتوسع في المسارات: يمكن استخدام المتغيرات لإنشاء مسارات ديناميكية.
```cmake set(SOURCE_DIR ${CMAKE_SOURCE_DIR}/src) add_library(my_library ${SOURCE_DIR}/mylibrary.cpp) ```
متغيرات CMake الأساسية
CMake يوفر مجموعة كبيرة من المتغيرات المحددة مسبقًا. بعض المتغيرات الأكثر استخدامًا تشمل:
المتغير | الوصف | مثال | CMAKE_SOURCE_DIR | دليل المصدر الرئيسي للمشروع | /home/user/myproject | CMAKE_BINARY_DIR | دليل البناء | /home/user/myproject/build | CMAKE_CXX_COMPILER | مسار مترجم C++ | /usr/bin/g++ | CMAKE_C_COMPILER | مسار مترجم C | /usr/bin/gcc | CMAKE_BUILD_TYPE | نوع البناء (Debug, Release, إلخ.) | Release | CMAKE_INSTALL_PREFIX | دليل التثبيت الافتراضي | /usr/local | CMAKE_PREFIX_PATH | قائمة الأدلة التي يتم البحث فيها عن الحزم المثبتة | /opt/mylibrary;/usr/local |
نطاق المتغيرات
كما ذكرنا سابقًا، للمتغيرات نطاق. فهم النطاق مهم لتجنب الأخطاء.
- النطاق العام: المتغيرات المعرفة خارج أي دالة أو ملف CMake لها نطاق عام ويمكن الوصول إليها من أي مكان في المشروع.
- النطاق المحلي: المتغيرات المعرفة داخل دالة أو ملف CMake لها نطاق محلي ولا يمكن الوصول إليها من الخارج.
أفضل الممارسات
- استخدم أسماء وصفية للمتغيرات: هذا يجعل الكود أكثر قابلية للقراءة والفهم.
- تجنب استخدام المتغيرات العامة قدر الإمكان: استخدم المتغيرات المحلية كلما أمكن ذلك لتقليل خطر التعارضات.
- وثق متغيراتك: اشرح الغرض من كل متغير وكيفية استخدامه.
- استخدم الأمر cache: يمكن استخدام الأمر set مع الخيار CACHE لتخزين المتغيرات في ذاكرة التخزين المؤقت لـ CMake. هذا يسمح للمستخدمين بتعديل قيم المتغيرات بسهولة باستخدام واجهة المستخدم الرسومية لـ CMake.
```cmake set(MY_VARIABLE "value" CACHE STRING "Description of my variable") ```
أمثلة متقدمة
- التحقق من وجود ملف:
```cmake if(EXISTS ${MY_FILE}) message(STATUS "File ${MY_FILE} exists") endif() ```
- التحقق من وجود دليل:
```cmake if(IS_DIRECTORY ${MY_DIRECTORY}) message(STATUS "Directory ${MY_DIRECTORY} exists") endif() ```
- استخدام القوائم:
```cmake set(MY_LIST item1 item2 item3) foreach(item ${MY_LIST}) message(STATUS "Item: ${item}") endforeach() ```
العلاقة مع أدوات أخرى
CMake غالبًا ما يستخدم مع أدوات أخرى مثل:
- CTest: نظام اختبار.
- CPack: نظام تعبئة.
- CDash: لوحة معلومات لمراقبة البناء والاختبار.
- Git: نظام التحكم في الإصدار.
- Doxygen: أداة لإنشاء الوثائق.
استراتيجيات تداول الخيارات الثنائية (روابط ذات صلة)
- استراتيجية 60 ثانية
- استراتيجية مارتينجال
- استراتيجية المضاعفة
- استراتيجية المتوسط المتحرك
- استراتيجية اختراق النطاق
- استراتيجية البولينجر باند
- استراتيجية RSI
- استراتيجية MACD
- استراتيجية Fibonacci Retracement
- استراتيجية Ichimoku Cloud
- استراتيجية Price Action
- استراتيجية التداول المتأرجح
- استراتيجية التداول اليومي
- استراتيجية التداول طويل الأجل
- استراتيجية التداول بناءً على الأخبار
التحليل الفني وتحليل حجم التداول (روابط ذات صلة)
- الشموع اليابانية
- خطوط الاتجاه
- مستويات الدعم والمقاومة
- مؤشر القوة النسبية (RSI)
- مؤشر المتوسط المتحرك للتقارب والتباعد (MACD)
- حجم التداول
- التحليل الأساسي
- التحليل الفني
- إدارة المخاطر
- علم النفس التجاري
- الرافعة المالية
- التقلب
- السيولة
- التحليل بين الأسواق
- التحليل الموجي
الموارد الإضافية
CMake CMakeLists.txt أوامر CMake نطاق المتغيرات ذاكرة التخزين المؤقت لـ CMake CTest CPack CDash Git Doxygen المتغيرات المخزنة مؤقتًا المتغيرات ذات القيمة الناتجة المتغيرات المخصصة CMAKE_SOURCE_DIR CMAKE_BINARY_DIR CMAKE_CXX_COMPILER CMAKE_C_COMPILER CMAKE_BUILD_TYPE CMAKE_INSTALL_PREFIX CMAKE_PREFIX_PATH set (CMake command) if (CMake command) foreach (CMake command) EXISTS (CMake command) IS_DIRECTORY (CMake command) CACHE (CMake keyword) قائمة CMake أفضل ممارسات CMake أخطاء CMake الشائعة تصحيح أخطاء CMake توسيع CMake CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub CMake GitLab CMake Bitbucket CMake SourceForge CMake Download CMake Install CMake Update CMake Uninstall CMake Clean CMake Configure CMake Build CMake Run CMake Debug CMake Profile CMake Variables CMake Functions CMake Macros CMake Policies CMake Properties CMake Targets CMake Dependencies CMake Modules CMake Generators CMake Packaging CMake Testing CMake Documentation CMake Tutorials CMake Examples CMake Community CMake Mailing Lists CMake Forums CMake Stack Overflow CMake GitHub [[
ابدأ التداول الآن
سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين