إصدار نظام البناء CMake 3.17.0

مقدم من إطلاق مولد نصي مفتوح عبر الأنظمة الأساسية CMake 3.17 تحديث، والذي يعمل كبديل لـ Autotools ويستخدم في مشاريع مثل KDE وLLVM/Clang وMySQL وMariaDB وReactOS وBlender. كود CMake مكتوب بلغة C++ ويتم توزيعه بموجب ترخيص BSD.

يتميز CMake بتوفيره لغة برمجة بسيطة، ووسيلة لتوسيع الوظائف من خلال الوحدات النمطية، وعدد أدنى من التبعيات (بدون ربط بـ M4 أو Perl أو Python)، ودعم التخزين المؤقت، ووجود أدوات للتجميع المتقاطع، ودعم إنشاء البنية ملفات لمجموعة واسعة من أنظمة البناء والمترجمين، وأدوات مساعدة الوجود ctest وcpack لتحديد البرامج النصية للاختبار وحزم البناء، والأداة المساعدة cmake-gui لإعداد معلمات البناء بشكل تفاعلي.

رئيسي تحسينات:

  • تمت إضافة مولد نصي تجميعي جديد يعتمد على مجموعة أدوات Ninja - "Ninja Multi-Config"، والذي يختلف عن المولد القديم في القدرة على معالجة العديد من تكوينات التجميع في وقت واحد.
  • في منشئ البرنامج النصي التجميعي لـ Visual Studio ظهر القدرة على تحديد الملفات المصدر المرتبطة بكل تكوين (مصادر لكل تكوين).
  • تمت إضافة القدرة على تعيين معلمات التعريف لـ CUDA ("cuda_std_03"، "cuda_std_14"، وما إلى ذلك) إلى أدوات تعيين معلمات المترجم (ميزات الترجمة).
  • تمت إضافة المتغيرات "CMAKE_CUDA_RUNTIME_LIBRARY" و"CUDA_RUNTIME_LIBRARY" لتحديد نوع مكتبات وقت التشغيل عند استخدام CUDA.
  • تمت إضافة وحدة "FindCUDAToolkit" لتحديد مجموعة أدوات CUDA المتوفرة على النظام دون تمكين لغة CUDA.
  • تمت إضافة أمر "--debug-find" إلى cmake لإخراج تشخيصات إضافية قابلة للقراءة عند إجراء عمليات البحث. ولأغراض مماثلة، تمت إضافة المتغير CMAKE_FIND_DEBUG_MODE.
  • تمت إضافة دعم للبحث عن أدوات CURL باستخدام ملفات التكوين التي تم إنشاؤها بواسطة cmake "CURLConfig.cmake" إلى وحدة "FindCURL". لتعطيل هذا السلوك، يتم توفير المتغير CURL_NO_CURL_CMAKE.
  • أضافت وحدة FindPython القدرة على البحث عن مكونات Python في البيئات الافتراضية المُدارة باستخدام "conda".
  • أضافت الأداة المساعدة ctest خيارات "--no-tests=[error|ignore]" لتحديد السلوك في حالة عدم وجود اختبارات و"--repeat" لتعيين شروط إعادة تشغيل الاختبارات (حتى النجاح، بعد انتهاء المهلة).
  • يتم الآن نقل خصائص هدف التجميع INTERFACE_LINK_OPTIONS وINTERFACE_LINK_DIRECTORIES وINTERFACE_LINK_DEPENDS بين التبعيات الداخلية للمكتبات المجمعة بشكل ثابت.
  • عند استخدام مجموعة أدوات MinGW، يتم تعطيل البحث عن ملفات DLL باستخدام أمر find_library افتراضيًا (بدلاً من ذلك، تكون المحاولة الافتراضية هي استيراد مكتبات ".dll.a").
  • لا يعتمد منطق تحديد أداة النينجا المساعدة في منشئ Ninja الآن على اسم الملف القابل للتنفيذ - حيث يتم استخدام أول أداة مساعدة لبناء النينجا أو النينجا أو سامو الموجودة في المسارات المحددة من خلال متغير بيئة PATH.
  • تمت إضافة أمر "-E rm" إلى cmake الذي يمكن استخدامه لإزالة الملفات والأدلة بدلاً من الأمرين المنفصلين "-E Remove" و"-E Remove_directory".

المصدر: opennet.ru

إضافة تعليق