Lançamento do sistema de compilação CMake 3.16

Introduzido lançamento de um gerador de script de construção aberto multiplataforma CFaça 3.16, que atua como uma alternativa ao Autotools e é usado em projetos como KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. O código CMake é escrito em C++ e distribuído sob a licença BSD.

CMake se destaca por fornecer uma linguagem de script simples, um meio de estender a funcionalidade por meio de módulos, um número mínimo de dependências (sem ligação a M4, Perl ou Python), suporte a cache, presença de ferramentas para compilação cruzada, suporte para geração de build arquivos para uma ampla variedade de sistemas de construção e compiladores, a presença dos utilitários ctest e cpack para definir scripts de teste e construir pacotes, utilitário cmake-gui para definir parâmetros de construção interativamente.

O principal melhorias:

  • Adicionado suporte para linguagens Objective C (“OBJC”) e Objective
    C++ ("OBJCXX"), que pode ser habilitado por meio dos comandos project() e enable_language(), após os quais o código nos arquivos ".m" ".mm" será compilado como código Objective C e Objective C++, em vez de como C++, como era antes;

  • Adicionado suporte para o compilador Clang na plataforma Solaris;
  • Adicionadas novas opções de linha de comando: “cmake -E true|false” para imprimir os códigos de retorno 0 e 1; "cmake --trace-redirect=" para redirecionar informações de rastreamento para um arquivo
    "stderr"; o comando "cmake --loglevel" foi renomeado para "--log-level" para ficar alinhado com os nomes dos outros comandos;

  • Adicionado o comando “target_precompile_headers()” para listar a lista de arquivos de cabeçalho usados ​​durante a pré-compilação (reduz o tempo de construção);
  • Adicionada a propriedade “UNITY_BUILD”, que ativa o modo batch para processamento de arquivos fonte em geradores para agilizar a compilação;
  • Adicionados comandos “find_file()”, “find_library()”, “find_path()”,
    "find_package()" e "find_program()" para pesquisar arquivos, bibliotecas, caminhos, pacotes e executáveis ​​de acordo com variáveis ​​que definem caminhos de pesquisa para diversas categorias de arquivos.
    As variáveis ​​"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" e "CMAKE_FIND_USE_PACKAGE_REGIST" são usadas para controlar os caminhos de pesquisa base RY ";

  • Adicionado o modo “file(GET_RUNTIME_DEPENDENCIES)” ao comando “file()”, que permite recuperar recursivamente a lista de bibliotecas usadas ao vincular dinamicamente um arquivo executável ou biblioteca. O modo substituiu o comando GetPrerequisites(), que agora está obsoleto;
  • O comando “ctest(1)” implementa a capacidade de serializar testes com base nos recursos necessários para cada teste;
  • A variável "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" foi descontinuada e deve ser substituída por "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Suporte aprimorado à plataforma AIX. Ao utilizar a propriedade "ENABLE_EXPORTS", além do arquivo executável, agora é gerado um arquivo de importação para o vinculador, salvo com a extensão ".imp". Em plugins criados chamando "add_library()" com a opção "MODULE", este arquivo pode ser usado ao vincular usando o comando "target_link_libraries()". A vinculação de tempo de execução no AIX está desativada por padrão porque o CMake agora fornece todas as informações de símbolo necessárias para vinculação no tempo de carregamento. Para utilizar a vinculação em tempo de execução de bibliotecas dinâmicas ou módulos carregáveis, você deve especificar explicitamente as opções “-Wl, -G” nas listas de flags de inicialização do vinculador, definidas através das variáveis ​​“CMAKE_SHARED_LINKER_FLAGS” e “CMAKE_MODULE_LINKER_FLAGS”.

Fonte: opennet.ru

Adicionar um comentário