Układ projektu CMake i CMakeLists.txt
Organizuj drzewa źródeł i pisz podstawowe pliki CMakeLists
Układ projektu CMake i CMakeLists.txt to bezpłatna lekcja C++ Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C++ Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C++ Academy zawiera 4 lekcji w sumie.
Dlaczego CMake?
CMake jest de facto standardem generatorów systemów kompilacji dla C++. Na podstawie jednego opisu tworzy pliki projektów dla Make, Ninja, Visual Studio i Xcode.
Minimalny plik CMakeLists.txt
Najmniejszy użyteczny plik CMakeLists.txt dla pojedynczego pliku wykonywalnego.
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)Kompilowanie poza katalogiem źródłowym
Zawsze należy kompilować w osobnym katalogu — dzięki temu drzewo źródeł pozostaje czyste.
# from project root
cmake -B build
cmake --build buildStandardowy układ projektu
Przejrzysta struktura:
CMakeLists.txtsrc/— pliki źródłoweinclude/— publiczne pliki nagłówkowetests/— testythird_party/— dołączone zależności
Dodawanie podkatalogów
Należy rekurencyjnie uwzględniać podkatalogi zawierające własne pliki CMakeLists.txt.
# top-level
add_subdirectory(src)
add_subdirectory(tests)Zmienne i właściwości
Zmienne ustawia się za pomocą set, a odczytuje za pomocą ${var}. Typowe zmienne to: CMAKE_BUILD_TYPE, CMAKE_CXX_FLAGS.
set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)Dynamiczne wyszukiwanie plików
Do szybkiego prototypowania można użyć file(GLOB ...). W środowisku produkcyjnym należy jawnie wymieniać pliki źródłowe, aby CMake uruchamiał się ponownie po ich dodaniu.
# Discouraged for production
file(GLOB SOURCES "src/*.cpp")
# Preferred
add_executable(myapp src/main.cpp src/util.cpp)Konfiguracje kompilacji
Typowe konfiguracje to: Debug, Release, RelWithDebInfo i MinSizeRel. Ustawia się je za pomocą -DCMAKE_BUILD_TYPE=Release.
cmake -B build -DCMAKE_BUILD_TYPE=ReleaseOstrzeżenia kompilatora
Ostrzeżenia należy włączać jako właściwości celu — takie rozwiązanie jest przenośne między kompilatorami.
target_compile_options(myapp PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
$<$<CXX_COMPILER_ID:MSVC>:/W4>
)Nowoczesny styl CMake
Należy preferować polecenia oparte na celach (target_*) zamiast poleceń globalnych. Dzięki nim właściwości są ograniczone do konkretnych celów.
CMakePresets.json (CMake 3.19+)
W pliku CMakePresets.json należy definiować konfiguracyjne ustawienia wielokrotnego użytku — współdzielone przez członków zespołu.
Instalowanie projektu
Należy używać poleceń install, aby kopiować pliki wykonywalne, biblioteki i pliki nagłówkowe do ścieżek instalacji.
install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)Szybkie sprawdzenie
Jaki układ katalogów jest zalecany podczas uruchamiania CMake?
Podsumowanie
CMake to standardowy generator systemu kompilacji C++. Należy napisać plik CMakeLists.txt, kompilować poza katalogiem źródłowym i używać poleceń opartych na celach. Ustawienia wielokrotnego użytku należy definiować za pomocą presetów, a flagi kompilatora — jako właściwości.
Często zadawane pytania
Czy lekcja „Układ projektu CMake i CMakeLists.txt” jest bezpłatna?
Tak — pełny tekst „Układ projektu CMake i CMakeLists.txt” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C++ Academy, przejdź na CoddyKit PRO. Kurs C++ Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Układ projektu CMake i CMakeLists.txt”?
Organizuj drzewa źródeł i pisz podstawowe pliki CMakeLists Ćwiczysz C++ Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć C++ Academy?
Nie wymagamy żadnego doświadczenia. C++ Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Układ projektu CMake i CMakeLists.txt”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji C++ Academy?
Tak. Każda lekcja C++ Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Układ projektu CMake i CMakeLists.txt
- Cele, linkowanie i widoczność: PUBLIC, PRIVATE
- Używanie vcpkg i Conan do zarządzania zależnościami
- Generowanie plików IDE i kompilacje wieloplatformowe