Κυκλοφορία του συστήματος κατασκευής CMake 3.16

Εισήχθη απελευθέρωση μιας πολλαπλής πλατφόρμας δημιουργίας σεναρίων ανοιχτής κατασκευής CMake 3.16, το οποίο λειτουργεί ως εναλλακτική λύση στα Autotools και χρησιμοποιείται σε έργα όπως το KDE, LLVM/Clang, MySQL, MariaDB, ReactOS και Blender. Ο κώδικας CMake είναι γραμμένος σε C++ και διανέμεται με την άδεια BSD.

Το CMake είναι αξιοσημείωτο για την παροχή μιας απλής γλώσσας δέσμης ενεργειών, ενός μέσου επέκτασης της λειτουργικότητας μέσω λειτουργικών μονάδων, έναν ελάχιστο αριθμό εξαρτήσεων (χωρίς δέσμευση σε M4, Perl ή Python), υποστήριξη προσωρινής αποθήκευσης, παρουσία εργαλείων για πολλαπλή μεταγλώττιση, υποστήριξη για δημιουργία build αρχεία για ένα ευρύ φάσμα συστημάτων κατασκευής και μεταγλωττιστών, τα βοηθητικά προγράμματα παρουσίας ctest και cpack για τον καθορισμό δοκιμαστικών σεναρίων και δημιουργίας πακέτων, το βοηθητικό πρόγραμμα cmake-gui για διαδραστική ρύθμιση παραμέτρων κατασκευής.

Ο κύριος βελτιώσεις:

  • Добавлена поддержка языков Objective C («OBJC») и Objective
    C++ («OBJCXX»), которые могут быть активированы через команды project() и enable_language(), после чего код в файлах «.m» «.mm» будет компилироваться как код на Objective C и Objective C++, а не как код на C++, как это было раньше;

  • Добавлена поддержка компилятора Clang на платформе Solaris;
  • Добавлены новые параметры командной строки: «cmake -E true|false» для вывода кодов возврата 0 и 1; «cmake —trace-redirect=» для перенаправления информации о трассировке в файл, вместо
    «stderr»; команда «cmake —loglevel» переименована в «—log-level» для приведения в соответствие с наименованием остальных команд;

  • Добавлена команда «target_precompile_headers()» для перечисления списка заголовочный файлов, используемых при предкомпиляции (сокращает время сборки);
  • Добавлено свойство «UNITY_BUILD», активирующее пакетный режим обработки исходных файлов в генераторах для ускорения сборки;
  • Добавлены команды «find_file()», «find_library()», «find_path()»,
    «find_package()» и «find_program()» для поиска файлов, библиотек, путей, пакетов и исполняемых файлов в соответствии с переменными, определяющими пути поиска различных категорий файлов.
    Для управления базовыми путями для поиска используются переменные «CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH», «CMAKE_FIND_USE_CMAKE_PATH», «CMAKE_FIND_USE_CMAKE_SYSTEM_PATH», «CMAKE_FIND_USE_PACKAGE_ROOT_PATH», «CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH» и «CMAKE_FIND_USE_PACKAGE_REGISTRY»;

  • В команду «file()» добавлен режим «file(GET_RUNTIME_DEPENDENCIES)», позволяющий рекурсивно извлечь список библиотек, задействованных при динамическом связывании исполняемого файла или библиотеки. Режим пришёл на смену команде GetPrerequisites(), которая теперь объявлена устаревшей;
  • В команде «ctest(1)» реализована возможность сериализации тестов, отталкиваясь от ресурсов, требуемых для каждого теста;
  • Объявлена устаревшей переменная «CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY», вместо которой следует использовать «CMAKE_FIND_USE_PACKAGE_REGISTRY»;
  • Улучшена поддержка платформы AIX. При использовании свойства «ENABLE_EXPORTS», помимо исполняемого файла, теперь формируется файл импорта для компоновщика, сохраняемый с расширением «.imp». В плагинах, создаваемых при помощи вызова «add_library()» с опцией «MODULE», данный файл может применяться при компоновке с использованием команды «target_link_libraries()». Runtime-компоновка в AIX по умолчанию отключена, так как CMake теперь предоставляет всю необходимую информацию о символах для связывания во время загрузки. Для применения runtime-компоновки динамических библиотек или загружаемых модулей следует явно указывать опции «-Wl,-G» в списки флагов запуска компоновщика, определяемых через переменные «CMAKE_SHARED_LINKER_FLAGS» и «CMAKE_MODULE_LINKER_FLAGS».

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο