Organização de projetos CMake e CMakeLists.txt
Organize árvores de código-fonte e escreva ficheiros CMakeLists básicos
Organização de projetos CMake e CMakeLists.txt é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
Por que CMake?
CMake é o gerador de sistemas de compilação de fato padrão para C++. Ele produz arquivos de projeto para Make, Ninja, Visual Studio e Xcode a partir de uma única descrição.
CMakeLists.txt Mínimo
O menor CMakeLists.txt útil para um único executável.
cmake_minimum_required(VERSION 3.20)
project(MyApp LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(myapp main.cpp)Compilações Fora do Diretório de Código-Fonte
Sempre compile em um diretório separado — isso mantém a árvore de código-fonte limpa.
# from project root
cmake -B build
cmake --build buildEstrutura de Projeto Padrão
Uma estrutura organizada:
CMakeLists.txtsrc/— arquivos de código-fonteinclude/— cabeçalhos públicostests/— testesthird_party/— dependências incluídas
Adicionando Subdiretórios
Recorra a subdiretórios que tenham seus próprios CMakeLists.txt.
# top-level
add_subdirectory(src)
add_subdirectory(tests)Variáveis e Propriedades
Defina variáveis com set. Leia-as com ${var}. Variáveis comuns: CMAKE_BUILD_TYPE, CMAKE_CXX_FLAGS.
set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)Encontrando Arquivos Dinamicamente
Use file(GLOB ...) para protótipos rápidos. Em produção, liste os arquivos de código-fonte explicitamente para que o CMake seja executado novamente quando arquivos forem adicionados.
# Discouraged for production
file(GLOB SOURCES "src/*.cpp")
# Preferred
add_executable(myapp src/main.cpp src/util.cpp)Configurações de Compilação
Configurações comuns: Debug, Release, RelWithDebInfo, MinSizeRel. Defina-as com -DCMAKE_BUILD_TYPE=Release.
cmake -B build -DCMAKE_BUILD_TYPE=ReleaseAvisos do Compilador
Ative os avisos como propriedades do alvo — isso permite a portabilidade entre compiladores.
target_compile_options(myapp PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
$<$<CXX_COMPILER_ID:MSVC>:/W4>
)Estilo Moderno do CMake
Prefira comandos baseados em alvos (target_*) em vez de comandos globais. Eles delimitam claramente o escopo das propriedades para alvos específicos.
CMakePresets.json (CMake 3.19+)
Defina configurações reutilizáveis em CMakePresets.json — compartilhadas entre os membros da equipe.
Instalando o Projeto
Use comandos install para copiar binários, bibliotecas e cabeçalhos para os caminhos de instalação.
install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)Verificação Rápida
Qual é o padrão de diretórios recomendado ao executar o CMake?
Recapitulação
CMake é o gerador de sistemas de compilação padrão para C++. Escreva um CMakeLists.txt, compile fora do diretório de código-fonte e use comandos baseados em alvos. Use predefinições para configurações compartilhadas e propriedades para opções do compilador.
Perguntas Frequentes
A aula “Organização de projetos CMake e CMakeLists.txt” é grátis?
Sim — o texto completo de “Organização de projetos CMake e CMakeLists.txt” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Organização de projetos CMake e CMakeLists.txt”?
Organize árvores de código-fonte e escreva ficheiros CMakeLists básicos Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Organização de projetos CMake e CMakeLists.txt”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Organização de projetos CMake e CMakeLists.txt
- Destinos, ligação e visibilidade: PUBLIC, PRIVATE
- Usar vcpkg e Conan para dependências
- Gerar ficheiros de IDE e compilações multiplataforma