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 buildStruttura standard del progetto
Una struttura ordinata:
CMakeLists.txtsrc/— file sorgenteinclude/— header pubblicitests/— testthird_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=ReleaseAvvisi 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
- Struttura dei progetti CMake e CMakeLists.txt
- Target, linking e visibilità: PUBLIC, PRIVATE
- Usare vcpkg e Conan per le dipendenze
- Generazione di file per IDE e build multipiattaforma