Introdução ao CMake: o que é e para que serve
\n\nCMake (Cross-Platform Make) é um poderoso sistema de automação de compilação de software multiplataforma e de código aberto. Ao contrário dos Makefiles tradicionais, o CMake não compila o projeto diretamente, mas gera arquivos de compilação para ferramentas nativas (Make, Ninja, Visual Studio, Xcode) com base em arquivos de configuração simples CMakeLists.txt.
Para que serve o CMake?
\n- \n
- Multiplataforma: O mesmo código pode ser compilado no Windows, Linux e macOS sem alterar a configuração. \n
- Gerenciamento de dependências: Suporte integrado para localizar e conectar bibliotecas externas (Boost, OpenCV, Qt, etc.). \n
- Flexibilidade: Suporte a vários geradores de projetos (Visual Studio, Xcode, Ninja, Unix Makefiles). \n
- Modularidade: Possibilidade de criar bibliotecas (estáticas e dinâmicas), executáveis e testes. \n
- Integração com IDE: IDEs modernas (CLion, VS Code, Qt Creator) possuem suporte integrado ao CMake. \n
O CMake tornou-se o padrão de facto para projetos C++. Gigantes como Google (TensorFlow, Chrome), Microsoft (VS Code), KDE, LLVM/Clang e muitos outros o utilizam.
\n\nInstalação do CMake
\n\nAo contrário das bibliotecas Python, o CMake não é instalado via pip. É um aplicativo independente. Vejamos a instalação para os principais sistemas operacionais:
\n\nWindows
\n- \n
- Baixe o instalador do site oficial (escolha a versão para Windows — .msi ou .zip). \n
- Execute a instalação. Marque obrigatoriamente a opção "Add CMake to the system PATH for all users". \n
- Após a instalação, verifique:
cmake --versionno prompt de comando. \n
Linux (Ubuntu/Debian)
\nsudo apt update\nsudo apt install cmake\ncmake --version\n\nmacOS (Homebrew)
\nbrew install cmake\ncmake --version\n\nVerificação da instalação
\nApós a instalação, execute no terminal:
\ncmake --version\n# A saída deve ser semelhante a:\n# cmake version 3.27.0\n\nInício rápido: primeiro projeto com CMake
\n\nVamos criar um projeto simples "Hello World" usando CMake.
\n\nEstrutura do projeto
\nmy_project/\n├── CMakeLists.txt\n└── main.cpp\n\nArquivo main.cpp
\n#include <iostream>\n\nint main() {\n std::cout << "Hello, CMake!" << std::endl;\n return 0;\n}\n\nArquivo CMakeLists.txt
\ncmake_minimum_required(VERSION 3.10)\nproject(HelloWorld VERSION 1.0 LANGUAGES CXX)\n\nadd_executable(hello main.cpp)\n\nCompilação do projeto
\nmkdir build\ncd build\ncmake ..\ncmake --build .\n./hello\n\nExplicação:
\n- \n
cmake_minimum_required— define a versão mínima do CMake. \n project— define o nome do projeto e a linguagem (CXX para C++). \n add_executable— cria um arquivo executável a partir dos códigos-fonte. \n
Principais métodos e funções do CMake
\n\n1. cmake_minimum_required()
\nDescrição: Define a versão mínima do CMake necessária para compilar o projeto. Se a versão do CMake for inferior à especificada, um erro será exibido.
\nParâmetros:
\n- \n
VERSION— versão no formato major.minor[.patch[.tweak]] \n FATAL_ERROR— opcional, causa um erro fatal se a versão não corresponder \n
Exemplo:
\ncmake_minimum_required(VERSION 3.16 FATAL_ERROR)\n\n2. project()
\nDescrição: Define o nome do projeto e seus parâmetros. Deve
Também na biblioteca
migrate para Go: guia completo com exemplos práticos
Rate Limiting em Java: bibliotecas e ferramentas para controle de requisições (Bucket4j, Resilience4j)
Aprendizado de Máquina em C#: bibliotecas ML.NET e Accord.NET
Cliente HTTP para Swift (iOS/macOS): melhores bibliotecas para trabalhar com rede
Trabalhando com S3 e armazenamento em nuvem em Swift (iOS/macOS): AWSS3 e Amplify