Релиз системы сборки CMake 3.16

Представлен релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.16, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.

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



Источник: http://www.opennet.ru/opennews/art.shtml? num=51938

© OpenNet