CMake Policies: Difference between revisions

From binaryoption
Jump to navigation Jump to search
Баннер1
(@pipegas_WP)
 
(@CategoryBot: Обновлена категория)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
## سياسات CMake: دليل شامل للمبتدئين
# سياسات CMake


'''سياسات CMake''' هي آلية قوية في نظام بناء CMake تسمح بالتحكم في سلوك أوامر CMake المختلفة. تعتبر فهم هذه السياسات أمرًا بالغ الأهمية لكتابة مشاريع CMake قابلة للنقل، ومتوافقة مع الإصدارات المختلفة من CMake، وقابلة للصيانة. هذا المقال يهدف إلى تقديم شرح مفصل لسياسات CMake للمبتدئين، مع التركيز على كيفية استخدامها وأهميتها.
## مقدمة


=== ما هي سياسات CMake؟ ===
سياسات CMake (CMake Policies) هي آلية قوية في نظام بناء CMake تسمح بالتحكم في سلوك أوامر CMake المختلفة. يمكن اعتبارها قواعد تحدد كيفية تفسير CMake لأوامر معينة، أو كيفية تعاملها مع إصدارات مختلفة من CMake نفسه. فهم سياسات CMake ضروري لكتابة مشاريع CMake قابلة للنقل ومتوافقة مع الإصدارات المختلفة من النظام. هذه المقالة موجهة للمبتدئين وتهدف إلى شرح مفهوم سياسات CMake بالتفصيل.


ببساطة، سياسة CMake هي خاصية تحدد سلوك أمر معين أو مجموعة من الأوامر. يمكن أن تكون السياسة موجودة أو غير موجودة، أو يمكن أن تكون في وضع "قديم" أو "حديث".  تسمح هذه المرونة للمطورين بالتكيف مع التغييرات في CMake مع الحفاظ على التوافق مع الإصدارات القديمة.  عندما يتم تقديم سياسة جديدة، غالبًا ما يتم تقديمها في وضع "قديم" افتراضيًا. هذا يعني أن CMake سيحاول سلوك قديم متوافق مع الإصدارات السابقة، ولكن مع تحذير بأن هذا السلوك قد يتغير في المستقبل.
## ما هي سياسات CMake؟


=== أهمية سياسات CMake ===
ببساطة، سياسة CMake هي إعداد يحدد سلوك أمر معين في CMake. يمكن أن تكون السياسة "قديمة" (OLD) أو "حديثة" (NEW).  عندما تكون السياسة في وضعها "القديم"، فإن CMake يتصرف كما كان يفعل في الإصدارات السابقة. عندما تكون في وضعها "الحديث"، فإن CMake يستخدم السلوك الجديد والمحسن.


* '''التوافق مع الإصدارات المختلفة من CMake:''' تضمن السياسات أن يعمل مشروعك بشكل متوقع على إصدارات مختلفة من CMake.
### لماذا نحتاج إلى سياسات CMake؟
* '''إدارة التغييرات:''' تسمح لك بالتحكم في كيفية استجابة مشروعك للتغييرات في سلوك أوامر CMake.
* '''قابلية النقل:''' تزيد من فرص عمل مشروعك على أنظمة تشغيل مختلفة.
* '''الصيانة:''' تجعل من السهل فهم وتعديل مشروع CMake بمرور الوقت.


=== كيفية العمل مع سياسات CMake ===
*  **التوافق مع الإصدارات السابقة:** تضمن السياسات أن مشاريع CMake الخاصة بك ستستمر في العمل حتى مع إصدارات CMake الأقدم.
*  **التحكم في السلوك:** تسمح لك بتحديد كيفية عمل أوامر CMake في مشروعك، مما يمنحك تحكمًا دقيقًا في عملية البناء.
*  **تجنب المشاكل:** يمكن أن تساعد في تجنب المشاكل الناجمة عن التغييرات في سلوك CMake بين الإصدارات.
*  **قابلية النقل:** تضمن أن مشروعك يمكن بناؤه على أنظمة تشغيل مختلفة.


CMake يوفر عدة أوامر للتعامل مع السياسات:
## كيفية التعامل مع سياسات CMake


* '''`cmake_policy` (POLICY):'''  يستخدم لتعيين السياسة لمدى المشروع أو النطاق الحالي.
يتم التعامل مع سياسات CMake باستخدام الأمر `cmake_policy`. الصيغة العامة هي:
* '''`cmake_policy` (VERSION):''' يستخدم للاستعلام عن حالة سياسة معينة في إصدار معين من CMake.
* '''`cmake_minimum_required` (VERSION):''' يحدد الحد الأدنى لإصدار CMake المطلوب لتشغيل المشروع.


=== أمثلة عملية ===
```cmake
cmake_policy(VERSION <version> POLICY <policy_name> <OLD|NEW>)
```
 
*  `VERSION <version>`: يحدد إصدار CMake الذي يجب تطبيق السياسة عليه.
*  `POLICY <policy_name>`: اسم السياسة التي تريد تغييرها.
*  `<OLD|NEW>`: يحدد ما إذا كنت تريد استخدام السلوك "القديم" أو "الحديث" للسياسة.


لنأخذ مثالاً على سياسة `CMP0057`. هذه السياسة تتعلق بكيفية التعامل مع المسارات النسبية في أمر `target_include_directories`.
### أمثلة


```cmake
1.  **تعيين سياسة `CMP0057` إلى "حديث":**
cmake_minimum_required(VERSION 3.10)
 
project(MyProject)
    ```cmake
    cmake_policy(VERSION 3.12 POLICY CMP0057 NEW)
    ```
    هذا يخبر CMake أنه بدءًا من الإصدار 3.12، يجب استخدام السلوك "الحديث" للسياسة `CMP0057`.
 
2.  **تعيين سياسة `CMP0068` إلى "قديم":**


# التحقق من حالة السياسة CMP0057
    ```cmake
cmake_policy(VERSION 3.10 CMP0057 NEW)
    cmake_policy(VERSION 3.18 POLICY CMP0068 OLD)
    ```
    هذا يخبر CMake أنه بدءًا من الإصدار 3.18، يجب استخدام السلوك "القديم" للسياسة `CMP0068`.


# الآن، سيتم التعامل مع المسارات النسبية في target_include_directories
### السياسات العالمية والمحلية
# وفقًا للسلوك الجديد.


target_include_directories(MyTarget PUBLIC include)
*  **السياسات العالمية:** يتم تعيينها خارج أي وظيفة أو نطاق. تؤثر على المشروع بأكمله.
*  **السياسات المحلية:** يتم تعيينها داخل وظيفة أو نطاق. تؤثر فقط على الجزء من التعليمات البرمجية داخل هذا النطاق.


# مثال آخر: تعيين سياسة CMP0057 إلى الوضع القديم
## بعض سياسات CMake الشائعة
cmake_policy(VERSION 3.10 CMP0057 OLD)


# الآن، سيتم التعامل مع المسارات النسبية في target_include_directories
| السياسة      | الوصف                                                                                                  |
# وفقًا للسلوك القديم.
| ----------- | ----------------------------------------------------------------------------------------------------- |
```
| `CMP0005`  | سلوك `find_package` عند عدم وجود ملف `Find<PackageName>.cmake`.                                          |
| `CMP0006`  | سلوك `install()` للأهداف التي ليس لديها خصائص `INSTALL_PREFIX`.                                        |
| `CMP0007`  | سلوك معالجة المتغيرات في سلاسل الأوامر.                                                                |
| `CMP0012`  | سلوك `target_link_libraries` عند استخدام الأهداف غير المحددة.                                            |
| `CMP0025`  | كيفية التعامل مع `CMAKE_INSTALL_PREFIX` في `install()`.                                                    |
| `CMP0057`  | سلوك `target_link_libraries` عند استخدام مكتبات متعددة.                                                 |
| `CMP0068`   | `RUNTIME DESTINATION` في `install()`.                                                                  |


في هذا المثال، قمنا أولاً بتحديد الحد الأدنى لإصدار CMake المطلوب. ثم قمنا بالتحقق من حالة السياسة `CMP0057` في الإصدار 3.10.  بعد ذلك، قمنا بتعيين السياسة إلى الوضع "NEW" (الحديث) لإجبار CMake على استخدام السلوك الجديد. ثم قمنا بتعيينها إلى الوضع "OLD" (القديم) لإجبار CMake على استخدام السلوك القديم.
يمكنك العثور على قائمة كاملة بالسياسات في [وثائق CMake الرسمية](https://cmake.org/cmake/policies/).


=== جدول بأهم سياسات CMake ===
## أفضل الممارسات


| السياسة | الوصف | الإصدار الذي تم تقديمه | الوضع الافتراضي |
*  **كن صريحًا:** حدد سياساتك بوضوح في ملف `CMakeLists.txt` الخاص بك.
|---|---|---|---|
*  **استخدم التعليقات:** اشرح سبب تغييرك للسياسة.
| [[CMP0001]] |  التوافق مع الإصدارات القديمة من المتغيرات | 2.8 | OLD |
*  **اختبر:** تأكد من أن مشروعك يعمل بشكل صحيح مع كل من السلوكيات "القديمة" و "الحديثة" للسياسات التي تغيرها.
| [[CMP0002]] |  سلوك `find_package` | 2.8 | OLD |
*  **حافظ على التحديث:** قم بتحديث سياساتك بانتظام لتتماشى مع أحدث إصدارات CMake.
| [[CMP0003]] |  معالجة مسارات `INSTALL_PREFIX` | 2.8 | OLD |
*  **استخدم `cmake_policy` بحذر:** لا تغير السياسات إلا إذا كنت تفهم تمامًا تأثيرها.
| [[CMP0004]] |  سلوك `install` مع المسارات النسبية | 2.8 | OLD |
| [[CMP0005]] |  سلوك `install` مع `DESTINATION` | 2.8 | OLD |
| [[CMP0006]] |  سلوك `target_link_libraries` | 2.8 | OLD |
| [[CMP0007]] |  سلوك `target_link_libraries` مع `PRIVATE` و `PUBLIC` | 2.8 | OLD |
| [[CMP0008]] |  سلوك `target_include_directories` | 2.8 | OLD |
| [[CMP0009]] |  سلوك `target_compile_definitions` | 2.8 | OLD |
| [[CMP0010]] |  سلوك `target_compile_options` | 2.8 | OLD |
| [[CMP0011]] |  سلوك `target_link_options` | 2.8 | OLD |
| [[CMP0012]] |  سلوك `target_property` | 2.8 | OLD |
| [[CMP0013]] |  سلوك `install_files` | 2.8 | OLD |
| [[CMP0014]] |  سلوك `install_directory` | 2.8 | OLD |
| [[CMP0015]] |  سلوك `install_program` | 2.8 | OLD |
| [[CMP0016]] |  سلوك `install_scripts` | 2.8 | OLD |
| [[CMP0017]] |  سلوك `install_manifest` | 2.8 | OLD |
| [[CMP0018]] |  سلوك `configure_file` | 2.8 | OLD |
| [[CMP0019]] |  سلوك `execute_process` | 2.8 | OLD |
| [[CMP0020]] |  سلوك `file(GLOB)` | 2.8 | OLD |
| [[CMP0021]] |  سلوك `file(GLOB_RECURSE)` | 2.8 | OLD |
| [[CMP0057]] |  مسارات نسبية في `target_include_directories` | 3.10 | NEW |


'''ملاحظة:''' هذا الجدول ليس شاملاً، وهناك العديد من السياسات الأخرى المتاحة.  يمكنك العثور على قائمة كاملة بالسياسات في [[وثائق CMake الرسمية]].
## سياسات CMake وتداول الخيارات الثنائية (تشبيه)


=== استراتيجيات متقدمة ===
يمكن تشبيه سياسات CMake باستراتيجيات إدارة المخاطر في تداول الخيارات الثنائية.  كما أن السياسات في CMake تحدد كيفية تفاعل النظام مع المواقف المختلفة، فإن استراتيجيات إدارة المخاطر تحدد كيفية التعامل مع تقلبات السوق.  على سبيل المثال:


* '''التحقق من إصدار CMake:''' استخدم `cmake_minimum_required` للتأكد من أن إصدار CMake المستخدم يلبي متطلبات مشروعك.
*   **الحماية من الخسارة (Stop-Loss):**  يشبه تعيين سياسة CMake إلى الوضع "القديم" للحفاظ على التوافق مع الإصدارات السابقة.  إنه إجراء وقائي يحد من الخسائر المحتملة.
* '''استخدام `if` للتحكم في السلوك:''' يمكنك استخدام عبارات `if` للتحقق من إصدار CMake وتعيين السياسات بشكل مشروط.
*   **تنويع المحفظة:** يشبه استخدام سياسات CMake مختلفة للتحكم في جوانب مختلفة من عملية البناء. إنه يقلل من المخاطر عن طريق توزيعها عبر عناصر متعددة.
* '''إنشاء ملفات تكوين:'''  يمكنك إنشاء ملفات تكوين تحتوي على إعدادات السياسة الخاصة بمشروعك.
*   **التحليل الفني:** يشبه فهم تأثير سياسة CMake قبل تغييرها. يتطلب تحليلًا دقيقًا قبل اتخاذ أي قرار.
* '''استخدام الوحدات النمطية (Modules):''' استخدم وحدات CMake النمطية لتنظيم التعليمات البرمجية الخاصة بك وجعلها أكثر قابلية لإعادة الاستخدام.
* '''التحليل الفني:''' فهم كيفية تأثير السياسات على أداء البناء.
* '''تحليل حجم التداول:''' مراقبة حجم التغييرات في السياسات للتنبؤ بالتحديثات المستقبلية.


=== الموارد الإضافية ===
## الروابط الداخلية


* [[وثائق CMake الرسمية]]
*   [[CMake]]
* [[CMake Wiki]]
*   [[CMakeLists.txt]]
* [[CMake Tutorial]]
*   [[أوامر CMake]]
* [[مجموعة مستخدمي CMake]]
*   [[وظائف CMake]]
* [[أمثلة CMake]]
*   [[المتغيرات في CMake]]
* [[التحليل الفني للأسهم]]
*   [[الوحدات في CMake]]
* [[التحليل الفني للعملات المشفرة]]
*   [[الحزم في CMake]]
* [[استراتيجيات تداول الخيارات الثنائية]]
*   [[المولدات في CMake]]
* [[إدارة المخاطر في الخيارات الثنائية]]
*   [[المتطلبات الأساسية في CMake]]
* [[تحليل حجم التداول في الأسواق المالية]]
*   [[التثبيت في CMake]]
* [[نماذج التداول الفني]]
*   [[ملفات التكوين في CMake]]
* [[مؤشرات التداول الفني]]
*   [[التصحيح في CMake]]
* [[استراتيجيات التداول اليومي]]
*   [[الذاكرة المؤقتة في CMake]]
* [[استراتيجيات التداول المتأرجح]]
*   [[التعامل مع الأخطاء في CMake]]
* [[استراتيجيات التداول طويل الأجل]]
*   [[التعامل مع الملفات في CMake]]
* [[تحليل الاتجاه في الأسواق المالية]]
*   [[التكامل المستمر في CMake]]
* [[نظرية الموجات إليوت]]
*   [[إدارة التبعيات في CMake]]
* [[تصحيح فيبوناتشي]]
*   [[التوثيق في CMake]]
* [[مستويات الدعم والمقاومة]]
*   [[تخصيص CMake]]
* [[أنماط الشموع اليابانية]]
*   [[أفضل ممارسات CMake]]


=== الخلاصة ===
## الروابط الخارجية (استراتيجيات التحليل الفني وحجم التداول)


سياسات CMake هي أداة قوية تسمح لك بالتحكم في سلوك CMake وضمان أن يعمل مشروعك بشكل متوقع على إصدارات مختلفة من CMake وأنظمة تشغيل مختلفة.  من خلال فهم سياسات CMake وكيفية استخدامها، يمكنك كتابة مشاريع CMake أكثر قابلية للنقل والصيانة.
*  [[تحليل الشموع اليابانية]]
*  [[مؤشر الماكد (MACD)]]
*  [[مؤشر القوة النسبية (RSI)]]
*  [[خطوط بولينجر]]
*  [[تحليل فيبوناتشي]]
*  [[حجم التداول]]
*  [[مؤشر التراكم/التوزيع (A/D)]]
*  [[مؤشر التدفق النقدي (MFI)]]
*  [[مؤشر ستوكاستيك]]
*  [[مؤشر متوسط التحرك]]
*  [[تحليل الموجات إليوت]]
*  [[التحليل الأساسي]]
*  [[إدارة رأس المال]]
*  [[التحليل المخطط]]
*  [[التحليل العرضي]]


[[Category:الفئة: CMake]]


== ابدأ التداول الآن ==
== ابدأ التداول الآن ==
Line 123: Line 130:
✓ تنبيهات باتجاهات السوق
✓ تنبيهات باتجاهات السوق
✓ مواد تعليمية للمبتدئين
✓ مواد تعليمية للمبتدئين
[[Category:CMake]]

Latest revision as of 09:06, 6 May 2025

  1. سياسات CMake
    1. مقدمة

سياسات CMake (CMake Policies) هي آلية قوية في نظام بناء CMake تسمح بالتحكم في سلوك أوامر CMake المختلفة. يمكن اعتبارها قواعد تحدد كيفية تفسير CMake لأوامر معينة، أو كيفية تعاملها مع إصدارات مختلفة من CMake نفسه. فهم سياسات CMake ضروري لكتابة مشاريع CMake قابلة للنقل ومتوافقة مع الإصدارات المختلفة من النظام. هذه المقالة موجهة للمبتدئين وتهدف إلى شرح مفهوم سياسات CMake بالتفصيل.

    1. ما هي سياسات CMake؟

ببساطة، سياسة CMake هي إعداد يحدد سلوك أمر معين في CMake. يمكن أن تكون السياسة "قديمة" (OLD) أو "حديثة" (NEW). عندما تكون السياسة في وضعها "القديم"، فإن CMake يتصرف كما كان يفعل في الإصدارات السابقة. عندما تكون في وضعها "الحديث"، فإن CMake يستخدم السلوك الجديد والمحسن.

      1. لماذا نحتاج إلى سياسات CMake؟
  • **التوافق مع الإصدارات السابقة:** تضمن السياسات أن مشاريع CMake الخاصة بك ستستمر في العمل حتى مع إصدارات CMake الأقدم.
  • **التحكم في السلوك:** تسمح لك بتحديد كيفية عمل أوامر CMake في مشروعك، مما يمنحك تحكمًا دقيقًا في عملية البناء.
  • **تجنب المشاكل:** يمكن أن تساعد في تجنب المشاكل الناجمة عن التغييرات في سلوك CMake بين الإصدارات.
  • **قابلية النقل:** تضمن أن مشروعك يمكن بناؤه على أنظمة تشغيل مختلفة.
    1. كيفية التعامل مع سياسات CMake

يتم التعامل مع سياسات CMake باستخدام الأمر `cmake_policy`. الصيغة العامة هي:

```cmake cmake_policy(VERSION <version> POLICY <policy_name> <OLD|NEW>) ```

  • `VERSION <version>`: يحدد إصدار CMake الذي يجب تطبيق السياسة عليه.
  • `POLICY <policy_name>`: اسم السياسة التي تريد تغييرها.
  • `<OLD|NEW>`: يحدد ما إذا كنت تريد استخدام السلوك "القديم" أو "الحديث" للسياسة.
      1. أمثلة

1. **تعيين سياسة `CMP0057` إلى "حديث":**

   ```cmake
   cmake_policy(VERSION 3.12 POLICY CMP0057 NEW)
   ```
   هذا يخبر CMake أنه بدءًا من الإصدار 3.12، يجب استخدام السلوك "الحديث" للسياسة `CMP0057`.

2. **تعيين سياسة `CMP0068` إلى "قديم":**

   ```cmake
   cmake_policy(VERSION 3.18 POLICY CMP0068 OLD)
   ```
   هذا يخبر CMake أنه بدءًا من الإصدار 3.18، يجب استخدام السلوك "القديم" للسياسة `CMP0068`.
      1. السياسات العالمية والمحلية
  • **السياسات العالمية:** يتم تعيينها خارج أي وظيفة أو نطاق. تؤثر على المشروع بأكمله.
  • **السياسات المحلية:** يتم تعيينها داخل وظيفة أو نطاق. تؤثر فقط على الجزء من التعليمات البرمجية داخل هذا النطاق.
    1. بعض سياسات CMake الشائعة

| السياسة | الوصف | | ----------- | ----------------------------------------------------------------------------------------------------- | | `CMP0005` | سلوك `find_package` عند عدم وجود ملف `Find<PackageName>.cmake`. | | `CMP0006` | سلوك `install()` للأهداف التي ليس لديها خصائص `INSTALL_PREFIX`. | | `CMP0007` | سلوك معالجة المتغيرات في سلاسل الأوامر. | | `CMP0012` | سلوك `target_link_libraries` عند استخدام الأهداف غير المحددة. | | `CMP0025` | كيفية التعامل مع `CMAKE_INSTALL_PREFIX` في `install()`. | | `CMP0057` | سلوك `target_link_libraries` عند استخدام مكتبات متعددة. | | `CMP0068` | `RUNTIME DESTINATION` في `install()`. |

يمكنك العثور على قائمة كاملة بالسياسات في [وثائق CMake الرسمية](https://cmake.org/cmake/policies/).

    1. أفضل الممارسات
  • **كن صريحًا:** حدد سياساتك بوضوح في ملف `CMakeLists.txt` الخاص بك.
  • **استخدم التعليقات:** اشرح سبب تغييرك للسياسة.
  • **اختبر:** تأكد من أن مشروعك يعمل بشكل صحيح مع كل من السلوكيات "القديمة" و "الحديثة" للسياسات التي تغيرها.
  • **حافظ على التحديث:** قم بتحديث سياساتك بانتظام لتتماشى مع أحدث إصدارات CMake.
  • **استخدم `cmake_policy` بحذر:** لا تغير السياسات إلا إذا كنت تفهم تمامًا تأثيرها.
    1. سياسات CMake وتداول الخيارات الثنائية (تشبيه)

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

  • **الحماية من الخسارة (Stop-Loss):** يشبه تعيين سياسة CMake إلى الوضع "القديم" للحفاظ على التوافق مع الإصدارات السابقة. إنه إجراء وقائي يحد من الخسائر المحتملة.
  • **تنويع المحفظة:** يشبه استخدام سياسات CMake مختلفة للتحكم في جوانب مختلفة من عملية البناء. إنه يقلل من المخاطر عن طريق توزيعها عبر عناصر متعددة.
  • **التحليل الفني:** يشبه فهم تأثير سياسة CMake قبل تغييرها. يتطلب تحليلًا دقيقًا قبل اتخاذ أي قرار.
    1. الروابط الداخلية
    1. الروابط الخارجية (استراتيجيات التحليل الفني وحجم التداول)


ابدأ التداول الآن

سجل في IQ Option (الحد الأدنى للإيداع $10) افتح حساباً في Pocket Option (الحد الأدنى للإيداع $5)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin للحصول على: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات باتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер