Izdaja sistema gradnje CMake 3.16

Predložil izdaja večplatformskega odprtega generatorja skriptov za gradnjo CMake 3.16, ki deluje kot alternativa Autotools in se uporablja v projektih, kot so KDE, LLVM/Clang, MySQL, MariaDB, ReactOS in Blender. Koda CMake je napisana v C++ in se distribuira pod licenco BSD.

CMake je znan po tem, da zagotavlja preprost skriptni jezik, sredstvo za razširitev funkcionalnosti prek modulov, minimalno število odvisnosti (brez vezave na M4, Perl ali Python), podporo za predpomnjenje, prisotnost orodij za navzkrižno prevajanje, podporo za ustvarjanje gradnje datoteke za široko paleto gradbenih sistemov in prevajalnikov, prisotnost pripomočkov ctest in cpack za definiranje testnih skriptov in gradnjo paketov, pripomoček cmake-gui za interaktivno nastavitev gradbenih parametrov.

Glavni izboljšave:

  • Добавлена поддержка языков 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».

Vir: opennet.ru

Dodaj komentar