Lanzamento do sistema de compilación CMake 3.16

Presentado lanzamento dun xerador de scripts de compilación aberta multiplataforma CMake 3.16, que actúa como alternativa a Autotools e úsase en proxectos como KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. O código CMake está escrito en C++ e distribúese baixo a licenza BSD.

CMake destaca por proporcionar unha linguaxe de scripts sinxela, un medio para estender a funcionalidade a través de módulos, un número mínimo de dependencias (sen vinculación a M4, Perl ou Python), soporte de caché, presenza de ferramentas para a compilación cruzada, soporte para xerar compilación. ficheiros para unha ampla gama de sistemas de compilación e compiladores, a presenza de utilidades ctest e cpack para definir scripts de proba e construír paquetes, a utilidade cmake-gui para establecer de forma interactiva os parámetros de compilación.

O principal melloras:

  • Engadido soporte para Objective C ("OBJC") e linguaxes Objective
    C++ ("OBJCXX"), que se pode activar mediante os comandos project() e enable_language(), despois do cal o código dos ficheiros ".m" ".mm" compilarase como Obxectivo C e Obxectivo C++, en lugar de como C++, como era antes;

  • Engadido soporte para o compilador Clang na plataforma Solaris;
  • Engadíronse novas opcións de liña de comandos: "cmake -E true|false" para imprimir os códigos de retorno 0 e 1; "cmake --trace-redirect=" para redirixir a información de rastrexo a un ficheiro
    "stderr"; o comando "cmake --loglevel" cambiou o nome a "--log-level" para axustalo cos nomes dos outros comandos;

  • Engadiuse o comando "target_precompile_headers()" para listar a lista de ficheiros de cabeceira utilizados durante a precompilación (reduce o tempo de compilación);
  • Engadida a propiedade "UNITY_BUILD", que activa o modo por lotes para procesar ficheiros fonte en xeradores para acelerar a compilación;
  • Engadidos comandos "find_file()", "find_library()", "find_path()",
    "find_package()" e "find_program()" para buscar ficheiros, bibliotecas, camiños, paquetes e executables segundo as variables que definen as rutas de busca para varias categorías de ficheiros.
    As variables "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_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_PATH" e "CMAKE_FIND_USE_SYSTEM_PACKAGE_ENVIRON_SYSTEM_PATH" e "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH" úsanse para controlar as rutas de busca base RY";

  • Engadiuse o modo "ficheiro(GET_RUNTIME_DEPENDENCIES)" ao comando "ficheiro()", que lle permite recuperar de forma recursiva a lista de bibliotecas utilizadas ao ligar dinámicamente un ficheiro executable ou biblioteca. O modo substituíu o comando GetPrerequisites(), que agora quedou en desuso;
  • O comando "ctest(1)" implementa a capacidade de serializar probas en función dos recursos necesarios para cada proba;
  • A variable "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" quedou en desuso e debería substituírse por "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Compatibilidade mellorada da plataforma AIX. Cando se utiliza a propiedade "ENABLE_EXPORTS", ademais do ficheiro executable, agora xérase un ficheiro de importación para o enlazador, gardado coa extensión ".imp". Nos complementos creados chamando a "add_library()" coa opción "MÓDULO", este ficheiro pódese usar ao ligar usando o comando "target_link_libraries()". A ligazón en tempo de execución en AIX está desactivada de forma predeterminada porque CMake agora ofrece toda a información de símbolos necesaria para a ligazón no momento de carga. Para utilizar a ligazón en tempo de execución de bibliotecas dinámicas ou módulos cargables, debe especificar explícitamente as opcións "-Wl, -G" nas listas de marcas de inicio do enlazador, definidas a través das variables "CMAKE_SHARED_LINKER_FLAGS" e "CMAKE_MODULE_LINKER_FLAGS".

Fonte: opennet.ru

Engadir un comentario