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
- 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