0Pricing
C++ Academy · Aula

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 build

Estrutura de Projeto Padrão

Uma estrutura organizada:

  • CMakeLists.txt
  • src/ — arquivos de código-fonte
  • include/ — cabeçalhos públicos
  • tests/ — testes
  • third_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=Release

Avisos 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

  1. Organização de projetos CMake e CMakeLists.txt
  2. Destinos, ligação e visibilidade: PUBLIC, PRIVATE
  3. Usar vcpkg e Conan para dependências
  4. Gerar ficheiros de IDE e compilações multiplataforma
← Voltar para C++ Academy