قالب C++ سريع لمشاريع CMake الحديثة، يهدف إلى أن يكون نقطة بداية سهلة الاستخدام.
هذا هو رأيي الشخصي في هذا النوع من القوالب، وبالتالي قد لا أستخدم أفضل الممارسات أو قد لا توافق على الطريقة التي أقوم بها بالأشياء. أي وجميع ردود الفعل هو موضع تقدير كبير!
تكوين ومشروع CMake الحديث، والذي، على حد علمي، يستخدم أفضل الممارسات،
مثال على تكوين Clang-Format ، مستوحى من نموذج Google الأساسي، مع تعديلات بسيطة. يهدف هذا فقط إلى أن يكون نقطة بداية، حيث أن أسلوب الترميز هو أمر شخصي، ولكل شخص الحرية في حذفه (للإعداد الافتراضي لـ LLVM ) أو تقديم البديل الخاص به،
تكامل المحللين الثابتين ، مع Clang-Tidy و Cppcheck ، حيث يكون الأول هو الخيار الافتراضي،
دعم Doxygen ، من خلال خيار ENABLE_DOXYGEN ، والذي يمكنك تفعيله إذا كنت ترغب في استخدامه،
دعم اختبار الوحدة ، من خلال GoogleTest (مع خيار تمكين GoogleMock ) أو Catch2 ،
يتم تمكين تغطية الكود باستخدام خيار ENABLE_CODE_COVERAGE ، من خلال تكامل Codecov CI،
دعم مدير الحزم مع Conan و Vcpkg من خلال الخيارات الخاصة بكل منهما
سير عمل CI لأنظمة التشغيل Windows وLinux وMacOS باستخدام GitHub Actions ، مع الاستفادة من ميزات التخزين المؤقت، لضمان الحد الأدنى من وقت التشغيل،
قوالب .md لـ: README وإرشادات المساهمة والمشكلات وطلبات السحب ،
ترخيص متساهل يسمح لك بدمجه بسهولة قدر الإمكان. القالب مرخص بموجب Unlicense،
خيارات للإنشاء كمكتبة رأسية فقط أو قابلة للتنفيذ، وليست مجرد مكتبة ثابتة أو مشتركة.
تكامل Ccache لتسريع أوقات إعادة البناء
ستوفر لك هذه التعليمات نسخة من المشروع جاهزة للعمل على جهازك المحلي لأغراض التطوير والاختبار.
من المفترض أن يكون هذا المشروع مجرد قالب، وبالتالي يمكن تغيير إصدارات البرنامج المستخدم لتناسب احتياجات المطور (المطورين) بشكل أفضل. إذا كنت ترغب في استخدام القالب كما هو ، أي استخدام الإصدارات الموصى بها هنا، فستحتاج إلى:
CMake v3.15+ - موجود على https://cmake.org/
مترجم C++ - يحتاج إلى دعم معيار C++ 17 على الأقل، مثل MSVC و GC و Clang
ملاحظة: يجب أيضًا أن تكون قادرًا على توفير مولد مدعوم من CMake .
من السهل جدًا تثبيت المشروع، كل ما عليك فعله هو استنساخه من GitHub أو إنشاء مستودع جديد منه (أيضًا على GitHub ).
إذا كنت ترغب في استنساخ المستودع، بدلاً من التوليد منه، فأنت تحتاج ببساطة إلى تشغيل:
git clone https://github.com/filipdutescu/modern-cpp-template/ بعد الانتهاء من الحصول على نسخة من المشروع، بأي من الطرق المذكورة أعلاه، قم بإنشاء مجلد جديد في مجلد include/ باسم مشروعك. قم بتحرير cmake/SourcesAndHeaders.cmake لإضافة ملفاتك.
ستحتاج أيضًا إلى إعادة تسمية الملف cmake/ProjectConfig.cmake.in للبدء بالاسم الدقيق لمشروعك . مثل cmake/MyNewProjectConfig.cmake.in . يجب عليك أيضًا إجراء نفس التغييرات في مسارات عمل GitHub المتوفرة، ولا سيما .github/workflows/ubuntu.yml ، حيث يجب عليك استبدال خيار CMake -DProject_ENABLE_CODE_COVERAGE=1 إلى -DMyNewProject_ENABLE_CODE_COVERAGE=1 .
أخيرًا، قم بتغيير "Project" من CMakeLists.txt ، من
project (
"Project"
VERSION 0.1.0
LANGUAGES CXX
)إلى الاسم الدقيق لمشروعك ، أي باستخدام الاسم السابق سيصبح:
project (
MyNewProject
VERSION 0.1.0
LANGUAGES CXX
) لتثبيت مشروع تم إنشاؤه بالفعل، تحتاج إلى تشغيل هدف install باستخدام CMake. على سبيل المثال:
cmake --build build --target install --config Release
# a more general syntax for that command is:
cmake --build < build_directory > --target install --config < desired_config > لبناء المشروع، كل ما عليك فعله، بعد تثبيت المشروع بشكل صحيح ، هو تشغيل روتين CMake مشابه للإجراء الموضح أدناه:
mkdir build/ && cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target installملاحظة: يمكن حذف
CMAKE_INSTALL_PREFIXالمخصص إذا كنت ترغب في التثبيت في موقع التثبيت الافتراضي.
يمكن العثور على المزيد من الخيارات التي يمكنك تعيينها للمشروع في ملف cmake/StandardSettings.cmake . بالنسبة لبعض الخيارات، قد تكون هناك حاجة إلى تكوين إضافي في ملفات *.cmake الخاصة بها (أي يحتاج Conan إلى CONAN_REQUIRES وقد يحتاج إلى CONAN_OPTIONS حتى يعمل الإعداد بشكل صحيح؛ تم تعيين الاثنين في ملف cmake/Conan.cmake ).
من أجل إنشاء وثائق للمشروع، تحتاج إلى تكوين البنية لاستخدام Doxygen. ويتم ذلك بسهولة، عن طريق تعديل سير العمل الموضح أعلاه كما يلي:
mkdir build/ && cd build/
cmake .. -D < project_name > _ENABLE_DOXYGEN=1 -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target doxygen-docsملاحظة: سيؤدي هذا إلى إنشاء دليل
docs/في الدليل الجذر للمشروع .
افتراضيًا، يستخدم القالب اختبار Google لاختبار الوحدة. يمكن تعطيل اختبار الوحدة في الخيارات، عن طريق تعيين ENABLE_UNIT_TESTING (من cmake/StandardSettings.cmake) على خطأ. لإجراء الاختبارات، استخدم ببساطة CTest، من دليل البناء، وقم بتمرير التكوين المرغوب لإجراء الاختبارات عليه. مثال على هذا الإجراء هو:
cd build # if not in the build directory already
ctest -C Release # or `ctest -C Debug` or any other configuration you wish to test
# you can also run tests with the `-VV` flag for a more verbose output (i.e.
# GoogleTest output as well)إذا كان ذلك ممكنا، ينبغي أن تقدم هنا.
إذا كان ذلك ممكنا، ينبغي أن تقدم هنا.
يرجى قراءة CONTRIBUTING.md للحصول على تفاصيل حول كيف يمكنك أن تصبح مساهمًا وعملية إرسال طلبات السحب إلينا.
يستخدم هذا المشروع SemVer للإصدار. يمكن العثور على قائمة بالإصدارات الموجودة في إصدارات المشروع.
هذا المشروع مرخص بموجب إلغاء الترخيص - راجع ملف الترخيص للحصول على التفاصيل