CMake Commands: 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 هو نظام بناء مفتوح المصدر عبر الأنظمة الأساسية يُستخدم لإدارة عملية بناء البرامج. يتيح لك إنشاء ملفات بناء (Makefiles، ملفات Visual Studio، إلخ) من خلال ملف نصي واحد، مما يجعله أداة قوية ومرنة للمطورين. هذه المقالة تقدم مقدمة للمبتدئين لأوامر CMake الأساسية، مع التركيز على كيفية استخدامها لإنشاء مشاريع بسيطة.
'''CMake''' (اختصار لـ Cross-Platform Make) هو نظام بناء مفتوح المصدر يُستخدم للتحكم في عملية تجميع البرامج. يعمل CMake كطبقة وسيطة بين المطور والبيئة، مما يسمح بإنشاء مشاريع قابلة للنقل عبر أنظمة تشغيل مختلفة مثل Windows و Linux و macOS. هذا المقال يقدم مقدمة شاملة لأوامر CMake الأساسية للمبتدئين، مع التركيز على كيفية استخدامها لبناء مشاريع بسيطة ومعقدة.


== ما هو CMake؟ ==
=== ما هو CMake ولماذا نستخدمه؟ ===


قبل الغوص في الأوامر، من المهم فهم الغرض من CMakeيُعتبر CMake بمثابة "مولد بناء".  بدلًا من أن يكون نظام بناء مباشرًا، فإنه يولد ملفات بناء خاصة بنظام التشغيل ومنصة التطوير التي تستخدمها. هذا يعني أنك تكتب ملف `CMakeLists.txt` واحدًا، و CMake يقوم بإنشاء ملفات بناء مناسبة لـ [[GNU Make]]، أو [[Visual Studio]]، أو [[Xcode]]، أو غيرها.  هذا يجعل مشاريعك قابلة للنقل عبر الأنظمة الأساسية بسهولة.  كما يوفر CMake ميزات متقدمة لإدارة التبعيات، وتحديد العلامات، والتعامل مع المكتبات الخارجية.
تقليدياً، كان بناء البرامج يتم باستخدام أدوات مثل Make أو NMake، والتي تعتمد بشكل كبير على نظام التشغيل.  CMake يحل هذه المشكلة من خلال إنشاء ملفات بناء (build files) خاصة بنظام التشغيل المحدد. هذه الملفات يمكن أن تكون ملفات Makefiles (لـ Make)، أو ملفات مشاريع Visual Studio (لـ Windows)، أو ملفات XCode (لـ macOS).  هذا يضمن أن عملية البناء متسقة بغض النظر عن النظام الأساسي المستخدم.  كما يوفر CMake ميزات متقدمة مثل إدارة الاعتماديات، واكتشاف المكتبات، وتوليد الوثائق.  يعتبر CMake أداة أساسية في تطوير البرمجيات الحديثة، خاصةً في المشاريع الكبيرة والمعقدة.


== ملف CMakeLists.txt ==
=== أوامر CMake الأساسية ===


ملف `CMakeLists.txt` هو قلب مشروع CMake.  يحتوي على سلسلة من الأوامر التي تخبر CMake بكيفية بناء مشروعك.  يجب أن يكون هذا الملف موجودًا في الدليل الجذر لمشروعك.
لنبدأ باستعراض بعض أوامر CMake الأساسية:


== الأوامر الأساسية ==
* '''project()''' : هذا الأمر يحدد اسم المشروع و (اختيارياً) لغة البرمجة المستخدمة.
  مثال: <code>project(MyProject CXX)</code>
* '''add_executable()''' : هذا الأمر يُستخدم لإنشاء ملف تنفيذي من ملفات المصدر.
  مثال: <code>add_executable(MyExecutable main.cpp helper.cpp)</code>
* '''add_library()''' : هذا الأمر يُستخدم لإنشاء مكتبة (library) من ملفات المصدر. يمكن أن تكون المكتبة ثابتة (static) أو مشتركة (shared).
  مثال: <code>add_library(MyLibrary SHARED helper.cpp)</code>
* '''include_directories()''' : هذا الأمر يحدد مسارات البحث عن ملفات الرأس (header files).
  مثال: <code>include_directories(/usr/local/include)</code>
* '''link_directories()''' : هذا الأمر يحدد مسارات البحث عن المكتبات. (عادةً ما يتم استبداله بـ target_link_libraries)
  مثال: <code>link_directories(/usr/local/lib)</code>
* '''target_link_libraries()''' :  هذا الأمر يربط المكتبات بالملف التنفيذي أو المكتبة.
  مثال: <code>target_link_libraries(MyExecutable MyLibrary)</code>
* '''set()''' : هذا الأمر يُستخدم لتعريف متغيرات CMake.
  مثال: <code>set(CMAKE_CXX_FLAGS "-Wall -std=c++11")</code>
* '''message()''' : هذا الأمر يُستخدم لعرض رسائل على الشاشة أثناء عملية البناء.
  مثال: <code>message(STATUS "Building MyProject...")</code>
* '''find_package()''' : هذا الأمر يُستخدم للبحث عن حزم (packages) خارجية وتضمينها في المشروع.
  مثال: <code>find_package(Boost REQUIRED)</code>
* '''configure_file()''' : هذا الأمر يُستخدم لإنشاء ملفات بناء من قوالب (templates) مع استبدال المتغيرات.


فيما يلي بعض أوامر CMake الأكثر استخدامًا:
=== مثال بسيط: مشروع "Hello World" ===


*  `project()`: يحدد اسم المشروع وإصداره.  على سبيل المثال: `project(MyProject VERSION 1.0)`
لنفترض أننا نريد بناء مشروع "Hello World" بسيط. إليك ملف `CMakeLists.txt` الذي يمكننا استخدامه:
*  `add_executable()`: يحدد ملفًا تنفيذيًا ليتم إنشاؤه من ملفات المصدر المحددة.  على سبيل المثال: `add_executable(my_program main.cpp)`
*  `add_library()`: يحدد مكتبة ليتم إنشاؤها.  يمكن أن تكون مكتبة ثابتة أو مشتركة.  على سبيل المثال: `add_library(mylibrary mylib.cpp)`
*  `include_directories()`: يضيف دليلًا إلى قائمة الدلائل التي يجب البحث فيها عن ملفات الرأس.  على سبيل المثال: `include_directories(/path/to/headers)`
*  `link_directories()`: يضيف دليلًا إلى قائمة الدلائل التي يجب البحث فيها عن المكتبات.  على سبيل المثال: `link_directories(/path/to/libraries)`
*  `target_link_libraries()`: يربط المكتبات بملف تنفيذي أو مكتبة أخرى.  على سبيل المثال: `target_link_libraries(my_program mylibrary)`
*  `set()`:  يحدد قيمة لمتغير.  على سبيل المثال: `set(CMAKE_CXX_FLAGS "-Wall -Wextra")`
*  `message()`:  يطبع رسالة إلى وحدة التحكم أثناء عملية التكوين. على سبيل المثال: `message(STATUS "Configuring project...")`
*  `find_package()`: يبحث عن حزم برامج خارجية. على سبيل المثال: `find_package(Boost REQUIRED)`
*  `install()`: يحدد كيفية تثبيت الملفات بعد البناء. على سبيل المثال: `install(TARGETS my_program DESTINATION bin)`
 
== مثال بسيط ==
 
لنفترض أن لدينا مشروعًا بسيطًا يتكون من ملفين: `main.cpp` و `mylib.cpp` وملف رأس `mylib.h`. فيما يلي مثال لملف `CMakeLists.txt`:


```cmake
```cmake
cmake_minimum_required(VERSION 3.10)
cmake_minimum_required(VERSION 3.10)
project(MySimpleProject VERSION 1.0)
project(HelloWorld CXX)


add_library(mylibrary mylib.cpp mylib.h)
add_executable(HelloWorld main.cpp)
add_executable(my_program main.cpp)
 
target_link_libraries(my_program mylibrary)
```
```


هذا الملف يخبر CMake بما يلي:
حيث `main.cpp` هو ملف المصدر الذي يحتوي على الكود التالي:


1.  يتطلب CMake الإصدار 3.10 أو أحدث.
```cpp
2.  اسم المشروع هو `MySimpleProject` وإصداره هو 1.0.
#include <iostream>
3.  يجب إنشاء مكتبة تسمى `mylibrary` من ملفات `mylib.cpp` و `mylib.h`.
4.  يجب إنشاء ملف تنفيذي يسمى `my_program` من ملف `main.cpp`.
5.  يجب ربط `mylibrary` بـ `my_program`.


== عملية البناء ==
int main() {
 
  std::cout << "Hello, World!" << std::endl;
لبناء المشروع، اتبع الخطوات التالية:
  return 0;
 
}
1.  إنشاء دليل بناء منفصل (يوصى به): `mkdir build`
```
2.  الانتقال إلى دليل البناء: `cd build`
3.  تشغيل CMake: `cmake ..` (النقطتان تشيران إلى الدليل الأصل، حيث يوجد `CMakeLists.txt`)
4.  بناء المشروع: `make` (أو `cmake --build .` بدلاً من `make`)
 
سيقوم CMake بإنشاء ملفات البناء المناسبة لنظامك، ثم سيقوم `make` (أو `cmake --build .`) بتجميع وتنفيذ مشروعك.
 
== متغيرات CMake ==
 
CMake يستخدم متغيرات لتخزين المعلومات.  يمكنك استخدام `set()` لتعيين قيم للمتغيرات.  هناك أيضًا العديد من المتغيرات المضمنة التي توفر معلومات حول النظام والبيئة.  على سبيل المثال، `CMAKE_CXX_COMPILER` يحتوي على اسم مترجم C++.


== استراتيجيات تداول الخيارات الثنائية ذات الصلة (للمبتدئين) ==
لإنشاء المشروع، نتبع الخطوات التالية:


على الرغم من أن CMake يتعلق ببناء البرامج، إلا أن فهم إدارة المخاطر والتنبؤات يمكن أن يكون مفيدًا للمطورين. بعض استراتيجيات تداول الخيارات الثنائية ذات الصلة تشمل:
1.  إنشاء دليل بناء (build directory).
2.  الانتقال إلى دليل البناء.
3.  تشغيل الأمر `cmake ..` (النقطتان تشيران إلى الدليل الأصل).
4.  تشغيل الأمر `make` (أو ما يعادله على نظام التشغيل الخاص بك).


*  [[استراتيجية مارتينجال]]
سيؤدي هذا إلى إنشاء ملف تنفيذي باسم `HelloWorld` في دليل البناء.
*  [[استراتيجية فيبوناتشي]]
*  [[استراتيجية المتوسط المتحرك]]
*  [[استراتيجية اختراق النطاق]]
*  [[استراتيجية التداول العكسي]]


== التحليل الفني ==
=== مفاهيم متقدمة ===


[[مؤشر القوة النسبية (RSI)]]
* '''Targets''' : في CMake، كل ملف تنفيذي أو مكتبة يُعتبر "هدفاً" (target).  يمكن تحديد خصائص لكل هدف، مثل مسارات التضمين، والمكتبات المرتبطة، والأعلام (flags) المستخدمة في التجميع.
[[مؤشر الماكد (MACD)]]
* '''Properties''' : CMake يستخدم نظاماً هرمياً من الخصائص (properties) لتحديد سلوك المشروع والأهداف.
[[خطوط بولينجر]]
* '''Generators''' :  كما ذكرنا سابقاً، CMake يستخدم "مولدات" (generators) لإنشاء ملفات بناء خاصة بنظام التشغيل المحدد. بعض المولدات الشائعة تشمل Makefiles, Ninja, Visual Studio, و XCode.
[[مستويات الدعم والمقاومة]]
* '''Modules''' : CMake يوفر مجموعة من الوحدات (modules) التي توفر وظائف إضافية، مثل البحث عن الحزم الخارجية، والتعامل مع الملفات، وتنفيذ الأوامر.
[[أنماط الشموع اليابانية]]
* '''Custom Commands''' : يمكن استخدام الأوامر المخصصة (custom commands) لتنفيذ مهام معينة أثناء عملية البناء، مثل إنشاء ملفات، أو تشغيل أدوات، أو تنفيذ اختبارات.


== تحليل حجم التداول ==
=== أدوات مساعدة للتحليل والتداول ===


[[حجم التداول المؤكد]]
في سياق تداول الخيارات الثنائية، يمكن تشبيه عملية بناء المشروع باستخدام CMake بعملية تحليل السوق وتحديد الفرص.  التحليل الفني، مثل [[تحليل الشموع اليابانية]] و [[مؤشر الماكد]] و [[مؤشر RSI]]، يمكن اعتباره بمثابة تحديد "الأهداف" (targets) في CMake، حيث يتم تحديد الخصائص (properties) لكل فرصة تداول.  إدارة المخاطر، مثل [[وقف الخسارة]] و [[جني الأرباح]]، يمكن اعتبارها بمثابة تحديد "الأعلام" (flags) المستخدمة في التجميع، والتي تحدد سلوك التداول.  كما أن [[تحليل حجم التداول]] و [[التحليل الأساسي]] يمكن اعتبارهما بمثابة "الوحدات" (modules) التي توفر وظائف إضافية لاتخاذ قرارات تداول مستنيرة.  استراتيجيات التداول المختلفة، مثل [[استراتيجية مارتينجال]] و [[استراتيجية فيبوناتشي]] و [[استراتيجية الاختراقات]] و [[استراتيجية المتوسطات المتحركة]] و [[استراتيجية التداول المتأرجح]] و [[استراتيجية التداول اليومي]] و [[استراتيجية التداول على المدى الطويل]] و [[استراتيجية التداول على الأخبار]] و [[استراتيجية التداول العكسي]] و [[استراتيجية التداول باستخدام الأنماط]] و [[استراتيجية التداول باستخدام النسب]] و [[استراتيجية التداول باستخدام المؤشرات]] و [[استراتيجية التداول باستخدام أنماط الشموع]] و [[استراتيجية التداول باستخدام التحليل الموجي]]، يمكن اعتبارها بمثابة "الأوامر المخصصة" (custom commands) التي تنفذ مهام معينة لتحقيق أهداف التداول.
[[حجم التداول المتزايد]]
[[التحليل باستخدام حجم التداول]]
[[التذبذب في حجم التداول]]
[[حجم التداول كإشارة انعكاس]]


== مصادر إضافية ==
=== الموارد الإضافية ===


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


== الخلاصة ==
=== الخلاصة ===


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


[[Category:**الفئة:أدوات البناء**


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

Latest revision as of 09:05, 6 May 2025

    1. أوامر CMake: دليل شامل للمبتدئين

CMake (اختصار لـ Cross-Platform Make) هو نظام بناء مفتوح المصدر يُستخدم للتحكم في عملية تجميع البرامج. يعمل CMake كطبقة وسيطة بين المطور والبيئة، مما يسمح بإنشاء مشاريع قابلة للنقل عبر أنظمة تشغيل مختلفة مثل Windows و Linux و macOS. هذا المقال يقدم مقدمة شاملة لأوامر CMake الأساسية للمبتدئين، مع التركيز على كيفية استخدامها لبناء مشاريع بسيطة ومعقدة.

ما هو CMake ولماذا نستخدمه؟

تقليدياً، كان بناء البرامج يتم باستخدام أدوات مثل Make أو NMake، والتي تعتمد بشكل كبير على نظام التشغيل. CMake يحل هذه المشكلة من خلال إنشاء ملفات بناء (build files) خاصة بنظام التشغيل المحدد. هذه الملفات يمكن أن تكون ملفات Makefiles (لـ Make)، أو ملفات مشاريع Visual Studio (لـ Windows)، أو ملفات XCode (لـ macOS). هذا يضمن أن عملية البناء متسقة بغض النظر عن النظام الأساسي المستخدم. كما يوفر CMake ميزات متقدمة مثل إدارة الاعتماديات، واكتشاف المكتبات، وتوليد الوثائق. يعتبر CMake أداة أساسية في تطوير البرمجيات الحديثة، خاصةً في المشاريع الكبيرة والمعقدة.

أوامر CMake الأساسية

لنبدأ باستعراض بعض أوامر CMake الأساسية:

  • project() : هذا الأمر يحدد اسم المشروع و (اختيارياً) لغة البرمجة المستخدمة.
  مثال: project(MyProject CXX)
  • add_executable() : هذا الأمر يُستخدم لإنشاء ملف تنفيذي من ملفات المصدر.
  مثال: add_executable(MyExecutable main.cpp helper.cpp)
  • add_library() : هذا الأمر يُستخدم لإنشاء مكتبة (library) من ملفات المصدر. يمكن أن تكون المكتبة ثابتة (static) أو مشتركة (shared).
  مثال: add_library(MyLibrary SHARED helper.cpp)
  • include_directories() : هذا الأمر يحدد مسارات البحث عن ملفات الرأس (header files).
  مثال: include_directories(/usr/local/include)
  • link_directories() : هذا الأمر يحدد مسارات البحث عن المكتبات. (عادةً ما يتم استبداله بـ target_link_libraries)
  مثال: link_directories(/usr/local/lib)
  • target_link_libraries() : هذا الأمر يربط المكتبات بالملف التنفيذي أو المكتبة.
  مثال: target_link_libraries(MyExecutable MyLibrary)
  • set() : هذا الأمر يُستخدم لتعريف متغيرات CMake.
  مثال: set(CMAKE_CXX_FLAGS "-Wall -std=c++11")
  • message() : هذا الأمر يُستخدم لعرض رسائل على الشاشة أثناء عملية البناء.
  مثال: message(STATUS "Building MyProject...")
  • find_package() : هذا الأمر يُستخدم للبحث عن حزم (packages) خارجية وتضمينها في المشروع.
  مثال: find_package(Boost REQUIRED)
  • configure_file() : هذا الأمر يُستخدم لإنشاء ملفات بناء من قوالب (templates) مع استبدال المتغيرات.

مثال بسيط: مشروع "Hello World"

لنفترض أننا نريد بناء مشروع "Hello World" بسيط. إليك ملف `CMakeLists.txt` الذي يمكننا استخدامه:

```cmake cmake_minimum_required(VERSION 3.10) project(HelloWorld CXX)

add_executable(HelloWorld main.cpp) ```

حيث `main.cpp` هو ملف المصدر الذي يحتوي على الكود التالي:

```cpp

  1. include <iostream>

int main() {

 std::cout << "Hello, World!" << std::endl;
 return 0;

} ```

لإنشاء المشروع، نتبع الخطوات التالية:

1. إنشاء دليل بناء (build directory). 2. الانتقال إلى دليل البناء. 3. تشغيل الأمر `cmake ..` (النقطتان تشيران إلى الدليل الأصل). 4. تشغيل الأمر `make` (أو ما يعادله على نظام التشغيل الخاص بك).

سيؤدي هذا إلى إنشاء ملف تنفيذي باسم `HelloWorld` في دليل البناء.

مفاهيم متقدمة

  • Targets : في CMake، كل ملف تنفيذي أو مكتبة يُعتبر "هدفاً" (target). يمكن تحديد خصائص لكل هدف، مثل مسارات التضمين، والمكتبات المرتبطة، والأعلام (flags) المستخدمة في التجميع.
  • Properties : CMake يستخدم نظاماً هرمياً من الخصائص (properties) لتحديد سلوك المشروع والأهداف.
  • Generators : كما ذكرنا سابقاً، CMake يستخدم "مولدات" (generators) لإنشاء ملفات بناء خاصة بنظام التشغيل المحدد. بعض المولدات الشائعة تشمل Makefiles, Ninja, Visual Studio, و XCode.
  • Modules : CMake يوفر مجموعة من الوحدات (modules) التي توفر وظائف إضافية، مثل البحث عن الحزم الخارجية، والتعامل مع الملفات، وتنفيذ الأوامر.
  • Custom Commands : يمكن استخدام الأوامر المخصصة (custom commands) لتنفيذ مهام معينة أثناء عملية البناء، مثل إنشاء ملفات، أو تشغيل أدوات، أو تنفيذ اختبارات.

أدوات مساعدة للتحليل والتداول

في سياق تداول الخيارات الثنائية، يمكن تشبيه عملية بناء المشروع باستخدام CMake بعملية تحليل السوق وتحديد الفرص. التحليل الفني، مثل تحليل الشموع اليابانية و مؤشر الماكد و مؤشر RSI، يمكن اعتباره بمثابة تحديد "الأهداف" (targets) في CMake، حيث يتم تحديد الخصائص (properties) لكل فرصة تداول. إدارة المخاطر، مثل وقف الخسارة و جني الأرباح، يمكن اعتبارها بمثابة تحديد "الأعلام" (flags) المستخدمة في التجميع، والتي تحدد سلوك التداول. كما أن تحليل حجم التداول و التحليل الأساسي يمكن اعتبارهما بمثابة "الوحدات" (modules) التي توفر وظائف إضافية لاتخاذ قرارات تداول مستنيرة. استراتيجيات التداول المختلفة، مثل استراتيجية مارتينجال و استراتيجية فيبوناتشي و استراتيجية الاختراقات و استراتيجية المتوسطات المتحركة و استراتيجية التداول المتأرجح و استراتيجية التداول اليومي و استراتيجية التداول على المدى الطويل و استراتيجية التداول على الأخبار و استراتيجية التداول العكسي و استراتيجية التداول باستخدام الأنماط و استراتيجية التداول باستخدام النسب و استراتيجية التداول باستخدام المؤشرات و استراتيجية التداول باستخدام أنماط الشموع و استراتيجية التداول باستخدام التحليل الموجي، يمكن اعتبارها بمثابة "الأوامر المخصصة" (custom commands) التي تنفذ مهام معينة لتحقيق أهداف التداول.

الموارد الإضافية

الخلاصة

CMake هو أداة قوية ومرنة لبناء البرامج. من خلال فهم أوامر CMake الأساسية والمفاهيم المتقدمة، يمكنك إنشاء مشاريع قابلة للنقل ويسهل صيانتها. يعتبر CMake أداة أساسية لأي مطور برامج جاد.


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

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

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

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

Баннер