كتاب الطبخ Cmake
يجمع هذا المستودع مصادر الوصفات الواردة في كتاب الطبخ CMake الذي نشرته شركة Packt وقام بتأليفه رادوفان باست وروبرتو دي ريميجيو
جدول المحتويات
الفصل الأول: من الملف القابل للتنفيذ البسيط إلى المكتبات
- 1. تجميع ملف مصدر واحد في ملف قابل للتنفيذ
- 2. تبديل المولدات
- 3. بناء وربط المكتبات الثابتة والمشتركة
- 4. التحكم في التجميع باستخدام الشروط
- 5. تقديم الخيارات للمستخدم
- 6. تحديد المترجم
- 7. تبديل نوع البناء
- 8. التحكم في أعلام المترجم
- 9. تحديد معيار اللغة
- 10. استخدام بنيات التحكم في التدفق
الفصل الثاني: الكشف عن البيئة
- 1. اكتشاف نظام التشغيل
- 2. التعامل مع الكود المصدري المعتمد على المنصة
- 3. التعامل مع كود المصدر المعتمد على المترجم
- 4. اكتشاف بنية المعالج المضيف
- 5. اكتشاف مجموعة تعليمات المعالج المضيف
- 6. تمكين التوجيه لمكتبة Eigen
الفصل الثالث: الكشف عن المكتبات والبرامج الخارجية
- 1. الكشف عن مترجم بايثون
- 2. الكشف عن مكتبة بايثون
- 3. الكشف عن وحدات وحزم بايثون
- 4. الكشف عن مكتبات الرياضيات BLAS و LAPACK
- 5. الكشف عن بيئة OpenMP الموازية
- 6. الكشف عن البيئة الموازية MPI
- 7. الكشف عن مكتبة Eigen
- 8. الكشف عن مكتبات التعزيز
- 9. الكشف عن المكتبات الخارجية: I. استخدام
pkg-config
- 10. الكشف عن المكتبات الخارجية: II. كتابة وحدة البحث
الفصل الرابع: إنشاء الاختبارات وتشغيلها
- 1. إنشاء اختبار وحدة بسيط
- 2. تحديد اختبار الوحدة باستخدام مكتبة Catch2
- 3. تحديد اختبار الوحدة والربط مع اختبار Google
- 4. تحديد اختبار الوحدة والربط مع اختبار التعزيز
- 5. استخدام التحليل الديناميكي للكشف عن عيوب الذاكرة
- 6. اختبار الأعطال المتوقعة
- 7. استخدام المهلات للاختبارات الطويلة
- 8. إجراء الاختبارات بالتوازي
- 9. تشغيل مجموعة فرعية من الاختبارات
- 10. استخدام تركيبات الاختبار
الفصل الخامس: تكوين الوقت وعمليات وقت البناء
- 1. استخدام عمليات الملفات المستقلة عن النظام الأساسي
- 2. تشغيل أمر مخصص في وقت التكوين
- 3. تشغيل أمر مخصص في وقت الإنشاء: I. استخدام
add_custom_command
- 4. تشغيل أمر مخصص في وقت الإنشاء: II. باستخدام
add_custom_target
- 5. تشغيل أوامر مخصصة لأهداف محددة في وقت الإنشاء
- 6. التحقيق في التجميع والربط
- 7. فحص أعلام المترجم
- 8. التحقيق في التنفيذ
- 9. ضبط التكوين والتجميع باستخدام تعبيرات المولد
الفصل السادس: إنشاء كود المصدر
- 1. توليد المصادر في وقت التكوين
- 2. إنشاء كود المصدر في وقت التكوين باستخدام بايثون
- 3. إنشاء كود المصدر في وقت البناء باستخدام بايثون
- 4. تسجيل معلومات إصدار المشروع من أجل إمكانية تكرار نتائج
- 5. تسجيل نسخة المشروع من ملف
- 6. تسجيل تجزئة Git في وقت التكوين
- 7. تسجيل تجزئة Git في وقت الإنشاء
الفصل السابع: هيكلة المشاريع
- 1. إعادة استخدام الكود مع الوظائف ووحدات الماكرو
- 2. تقسيم مصادر CMake إلى وحدات
- 3. كتابة دالة لاختبار وتعيين إشارات المترجم
- 4. تحديد دالة أو ماكرو باستخدام الوسائط المسماة
- 5. إعادة تعريف الوظائف ووحدات الماكرو
- 6. إهمال الوظائف ووحدات الماكرو والمتغيرات
- 7. تحديد النطاق باستخدام
add_subdirectory
- 8. تجنب المتغيرات العالمية باستخدام
target_sources
- 9. تنظيم مشاريع فورتران
الفصل الثامن: نمط البناء الفائق
- 1. استخدام نمط البناء الفائق
- 2. إدارة التبعيات باستخدام البنية الفائقة: I. مكتبات Boost
- 3. إدارة التبعيات باستخدام البنية الفائقة: II. مكتبة FFTW
- 4. إدارة التبعيات باستخدام البنية الفائقة: III. إطار اختبار جوجل
- 5. إدارة مشروعك كمبنى رائع
الفصل التاسع: المشاريع المختلطة اللغات
- 1. بناء مشاريع فورتران التي تستخدم مكتبات C/C++
- 2. بناء مشاريع C/C++ التي تستخدم مكتبات Fortran
- 3. بناء مشاريع C++ وPython باستخدام Cython
- 4. بناء مشاريع C++ وPython باستخدام Boost.Python
- 5. بناء مشاريع C++ وPython باستخدام pybind11
- 6. المزج بين C وC++ وFortran وPython باستخدام Python CFFI
الفصل العاشر: كتابة المثبت
- 1. تثبيت مشروعك
- 2. توليد رؤوس التصدير
- 3. تصدير أهدافك
- 4. تركيب بناء رائع
الفصل الحادي عشر: مشاريع التعبئة والتغليف
- 1. توليد الحزم المصدرية والثنائية
- 2. توزيع مشروع C++/Python المبني باستخدام CMake/pybind11 عبر PyPI
- 3. توزيع مشروع C/Fortran/Python المبني باستخدام CMake/CFFI عبر PyPI
- 4. توزيع مشروع بسيط كحزمة كوندا
- 5. توزيع المشروع بالتبعيات كحزمة Conda
الفصل الثاني عشر: توثيق البناء
- 1. بناء التوثيق باستخدام الدوكسيجن
- 2. بناء التوثيق باستخدام أبو الهول
- 3. الجمع بين الدوكسيجن وأبو الهول
الفصل 13: المولدات البديلة والتجميع المتقاطع
- 1. تجميع مثال لـ helloworld
- 2. تجميع ثنائي لنظام Windows مع موازاة OpenMP
الفصل الرابع عشر: اختبار لوحات المعلومات
- 1. نشر الاختبارات على لوحة تحكم CDash
- 2. الإبلاغ عن تغطية الاختبار إلى لوحة معلومات CDash
- 3. استخدام AddressSanitizer والإبلاغ عن عيوب الذاكرة إلى CDash
- 4. استخدام ThreadSanitizer والإبلاغ عن سباقات البيانات إلى CDash
الفصل 15: نقل المشروع إلى CMake