Nós já mostramos aqui um Tutorial Definitivo do GNU Autotools para Iniciantes bem como, um outro tutorial também de Como Criar um Makefile.
Mas o CMake tem sido bastante adotado pela comunidade/empresas pelo fato de ser multiplataforma e pelo fato de ser muito fácil de usar.
CMake é um sistema multiplataforma para realizar geração automatizada. É comparável com o programa Unix Make no qual o processo de geração é, ao final, controlado pelos arquivos de configuração, no caso do CMake chamados de arquivos CMakeLists.txt.
Diferente de Make, ele não gera diretamente o software final, mas em vez disso gera arquivos de geração padrões (por exemplo, makefiles em Unix e projetos/espaços de trabalho no Visual C++ no Windows) os quais são usados de modo comum.
Isto permite que desenvolvedores familiarizados com um ambiente de desenvolvimento particular (tal como as várias IDEs) utilizem-o no modo padrão. É esta utilização do ambiente de geração nativo que distingue CMake dos outros sistemas mais conhecidos como o SCons.
O nome “CMake” é uma abreviação de “cross plataform make”, ou em português make multiplataforma.
Para instalar o CMake use o gerenciador de pacotes da sua distribuição, exemplos:
Lembrando que você precisa também possuir um compilador instalado, exemplo:gcc/g++
No Gentoo, Funtoo e similares, não precisa instalar, pois o CMake já é nativo desses sistemas.
Supondo que você possui o seguinte arquivo:
Exemplo de construção de um código em C++
Logicamente você poderia compilar com o GCC, the GNU Compiler Collection rodando o comando: g++ main.cpp -o myexample
.
No entanto, para usar o CMake você primeiramente precisa criar um arquivo de nome: CMakeLists.txt: vim CMakeLists.txt
(necessário escrever dessa forma, respeitando as letras em minúsculas e maiúsculas).
Dentro desse arquivo(para esse exemplo básico, e que serve até para projetos maiores) você precisará incluir 3 linhas:
cmake_minimum_required(VERSION 3.10)
, consulte a versão que você possui para informá-la ou mesmo uma inferior a ela: cmake --version
.project(MeuExemplo)
add_executable(myexample main.cpp)
(se houver mais de um arquivo, exemplo se fosse diretamente pelo g++:
g++ main.cpp outro.cpp -o binario
) , no CMakeLists seria:add_executable(binario main.cpp outro.cpp)
, assim como diretamente pelo compilador não precisa informar as bibliotecas(.h. .hh) , pois já fazem parte do includes, a não ser que não esteja.
Após isso, basta criar um diretório os ficarão os arquivos do CMake e executar o comando cmake
:
Crie um diretório separado para ficar tudo organizado e em seguida execute o cmake apontando para o diretório imediatamente anterior “..”
Isso gerou diversos arquivos de verificação do CMake e também o Makefile , agora basta compilar e testar o binário final:
A saída será similar à imagem abaixo:
Existem mais coisas que você pode fazer dentro do CMakeLists.txt , como: controle de versão de projeto, binários, condições e entre outros, mas em resumo ele se resume à isso demonstrado aqui.
Caso você tenha interesse em saber mais, recomendo você ler o tutorial do próprio CMake clicando aqui
cmake cpp linguagemc compiladores gcc llvm clang make