lezione 06

build system con cmake

configurare progetti multi-file e dipendenze in modo pulito.

livello: base durata: 30 min output: build modulare badge: build system

perché cmake

cmake standardizza il build su windows, mac e linux. evita script specifici per ogni os.

CMakeLists base

cmake_minimum_required(VERSION 3.20)
project(studio)

add_executable(app main.cpp)

target multipli

add_library(core src/core.cpp)
add_executable(app main.cpp)
target_link_libraries(app PRIVATE core)

dipendenze

usa FetchContent per dipendenze moderne.

include(FetchContent)
FetchContent_Declare(fmt
  GIT_REPOSITORY https://github.com/fmtlib/fmt.git
  GIT_TAG 10.1.1)
FetchContent_MakeAvailable(fmt)

target_link_libraries(app PRIVATE fmt::fmt)

workflow

cmake -S . -B build
cmake --build build
./build/app

panoramica

In questo capitolo su build system con cmake, configurare progetti multi-file e dipendenze in modo pulito. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.

Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).

badge: build system

obiettivi

  • capire e applicare perché cmake in uno scenario reale
  • capire e applicare CMakeLists in uno scenario reale
  • capire e applicare target in uno scenario reale
  • capire e applicare dipendenze in uno scenario reale

scheda rapida

#include <iostream>
#include <vector>

int main() {
  std::vector<int> dati{1, 2, 3};
  for (auto &v : dati) {
    v *= 2;
  }
  for (const auto &v : dati) {
    std::cout << v << " ";
  }
  std::cout << "\n";
  return 0;
}

Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.

mini progetto

Progetto con libreria e binario.

  • crea CMakeLists.txt base
  • definisci target lib
  • linka l'exe
  • abilita warning

output atteso: uno script o query ripetibile con risultati verificabili.

checklist

  • ho eseguito gli snippet e controllato l'output
  • ho annotato almeno 2 trade-off
  • ho completato il mini progetto
  • ho salvato un riepilogo personale
start a brief