0Pricing
C++ Academy · Lezione

Struttura dei progetti CMake e CMakeLists.txt

Organizzi gli alberi dei sorgenti e scriva file CMakeLists di base

Struttura dei progetti CMake e CMakeLists.txt è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.

Perché CMake?

CMake è lo standard de facto per la generazione del sistema di build di C++. Produce file di progetto per Make, Ninja, Visual Studio e Xcode a partire da un'unica descrizione.

CMakeLists.txt minimo

Il più piccolo CMakeLists.txt utile per un singolo eseguibile.

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)

Build out-of-source

Compili sempre in una directory separata: mantiene pulito l'albero dei sorgenti.

# from project root
cmake -B build
cmake --build build

Struttura standard del progetto

Una struttura ordinata:

  • CMakeLists.txt
  • src/ — file sorgente
  • include/ — header pubblici
  • tests/ — test
  • third_party/ — dipendenze incluse nel progetto

Aggiungere sottodirectory

Scenda ricorsivamente nelle sottodirectory che contengono il proprio CMakeLists.txt.

# top-level
add_subdirectory(src)
add_subdirectory(tests)

Variabili e proprietà

Imposti le variabili con set. Le legga con ${var}. Variabili comuni: CMAKE_BUILD_TYPE, CMAKE_CXX_FLAGS.

set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)

Trovare i file dinamicamente

Utilizzi file(GLOB ...) per i prototipi rapidi. In produzione, elenchi esplicitamente i sorgenti, così CMake viene rieseguito quando vengono aggiunti nuovi file.

# Discouraged for production
file(GLOB SOURCES "src/*.cpp")

# Preferred
add_executable(myapp src/main.cpp src/util.cpp)

Configurazioni di build

Configurazioni comuni: Debug, Release, RelWithDebInfo, MinSizeRel. Le imposti con -DCMAKE_BUILD_TYPE=Release.

cmake -B build -DCMAKE_BUILD_TYPE=Release

Avvisi del compilatore

Abiliti gli avvisi come proprietà del target: è un approccio portabile tra compilatori.

target_compile_options(myapp PRIVATE
    $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
    $<$<CXX_COMPILER_ID:MSVC>:/W4>
)

Stile moderno di CMake

Preferisca i comandi basati sui target, come target_*, a quelli globali. In questo modo le proprietà vengono applicate in modo chiaro a target specifici.

CMakePresets.json (CMake 3.19+)

Definisca configurazioni riutilizzabili in CMakePresets.json, condivise tra i membri del team.

Installare il progetto

Utilizzi i comandi install per copiare binari, librerie e header nei percorsi di installazione.

install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)

Verifica rapida

Qual è il modello di directory consigliato quando si esegue CMake?

Riepilogo

CMake è il generatore standard del sistema di build C++. Scriva un CMakeLists.txt, esegua build out-of-source e utilizzi comandi basati sui target. Utilizzi i preset per le configurazioni condivise e le proprietà per i flag del compilatore.

Domande Frequenti

La lezione «Struttura dei progetti CMake e CMakeLists.txt» è gratuita?

Sì — il testo completo di «Struttura dei progetti CMake e CMakeLists.txt» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.

Cosa imparerò in «Struttura dei progetti CMake e CMakeLists.txt»?

Organizzi gli alberi dei sorgenti e scriva file CMakeLists di base Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C++ Academy?

Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Struttura dei progetti CMake e CMakeLists.txt»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C++ Academy?

Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Struttura dei progetti CMake e CMakeLists.txt
  2. Target, linking e visibilità: PUBLIC, PRIVATE
  3. Usare vcpkg e Conan per le dipendenze
  4. Generazione di file per IDE e build multipiattaforma
← Torna a C++ Academy