"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استخدام CMake لاكتشاف دعم C++ 11 في المترجمين؟

كيف يمكنني استخدام CMake لاكتشاف دعم C++ 11 في المترجمين؟

تم النشر بتاريخ 2024-11-10
تصفح:481

How Can I Use CMake to Detect C  11 Support in Compilers?

اكتشاف دعم C 11 في المترجمين باستخدام CMake

أحد التحديات في تطوير البرمجيات هو ضمان التوافق مع إصدارات المترجم المختلفة ومجموعات الميزات الخاصة بها. على وجه الخصوص، تحديد ما إذا كان المترجم يدعم C 11 يمكن أن يكون أمرًا بالغ الأهمية للمشاريع التي تعتمد على ميزات اللغة الأحدث.

يوفر CMake طريقة مناسبة لمعالجة هذه المشكلة. مع الإصدار 3.1.0 والإصدارات الأحدث من CMake، فإنه يقدم المتغير CMAKE_CXX_COMPILE_FEATURES، الذي يسرد ميزات C التي يدعمها المترجم النشط.

عمليًا، بدلاً من الاعتماد مباشرة على هذا المتغير، CMake يوفر آليات أكثر تنظيمًا لتحديد معايير وميزات لغة C.

تحديد معيار C بشكل صريح

أحد الخيارات هو تعيين CXX_STANDARD و خصائص CXX_STANDARD_REQUIRED لهدف CMake الخاص بك. يحدد هذا بشكل صريح معيار C المطلوب وما إذا كان إلزاميًا (إذا لم يدعمه المترجم، فسوف تفشل البنية).

على سبيل المثال:

add_executable(prog main.cc)
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)

تحديد ميزات C المطلوبة

بدلاً من ذلك، يمكنك استخدام الأمر

target_compile_features لتحديد ميزات C المستخدمة بواسطة هدفك. سيستنتج CMake بعد ذلك معيار C المناسب من هذه الميزات.

تسرد الخاصية العالمية

CMAKE_CXX_KNOWN_FEATURES ميزات C المتاحة للنظر فيها.

على سبيل المثال:

add_executable(foobar main.cc)
set(needed_features
    cxx_strong_enums
    cxx_constexpr
    cxx_auto_type)
target_compile_features(foobar PRIVATE ${needed_features})

التحقق من الميزات المدعومة

للتحقق من ميزات C المدعومة للمترجم الخاص بك:

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(foobar CXX)
message("Your C   compiler supports these C   features:")
foreach(feature in ${CMAKE_CXX_COMPILE_FEATURES})
    message(feature)
endforeach()
تمنحك هذه الأساليب المرونة والتحكم في معيار لغة C والميزات المستخدمة في مشاريع CMake الخاصة بك.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3