🛠️ CMake без боли: настрой сборку один раз и забудь
CMake пугает многих, но не тебя. Вот простой и понятный гайд по настройке CMake для C++ без боли и магии. Мини-шаблон, советы, лайфхаки — и всё это в сопровождении Кодика 🚀
Если ты писал на C++, ты наверняка сталкивался с CMake. И, возможно, у тебя был момент отчаяния, когда всё просто не собирается. CMake — мощный инструмент, но его синтаксис и структура часто вызывают боль. Давай разберёмся, как настроить CMake один раз и правильно, чтобы больше не возвращаться к хаосу 💡

🔰 Что такое CMake?
CMake — это система генерации сборки. Она не компилирует код напрямую, а создаёт файлы для сборки под твою систему: Makefile, Ninja, Xcode или Visual Studio.
✅ Работает кроссплатформенно
✅ Позволяет настраивать зависимости
✅ Упрощает сборку больших проектов
✅ Совместим с IDE и CI/CD
🧱 Базовая структура проекта с CMake
project-root/
├── CMakeLists.txt
├── src/
│ └── main.cpp
├── include/
│ └── mylib.hpp
├── CMakeLists.txt (внутри src/)
📌 Корневой CMakeLists.txt
:
cmake_minimum_required(VERSION 3.15)
project(MyProject)
set(CMAKE_CXX_STANDARD 20)
add_subdirectory(src)
📌 src/CMakeLists.txt
:
add_executable(my_app main.cpp)
target_include_directories(my_app PRIVATE ../include)
⚙️ Советы по настройке CMake без боли
1. Используй target_*
вместо глобальных переменных
❌ Плохо:
include_directories(./include)
✅ Правильно:
target_include_directories(my_app PRIVATE ./include)
2. Добавляй compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Помогает автокомплиту и подсветке ошибок в VS Code и clangd.
3. Всегда используй out-of-source build
mkdir build && cd build
cmake ..
cmake --build .
4. Подключай сторонние библиотеки правильно
Пример с FetchContent:
include(FetchContent)
FetchContent_Declare(
json
URL https://github.com/nlohmann/json/releases/latest/download/json.hpp
)
FetchContent_MakeAvailable(json)
target_link_libraries(my_app PRIVATE nlohmann_json::nlohmann_json)
🧪 Чеклист хорошего CMake-проекта
✅ CMakeLists.txt не длиннее 30 строк
✅ Все зависимости через
target_*
✅ Поддержка Debug/Release
✅ Out-of-source сборка
✅ Работает в терминале и IDE
📚 Хочешь углубиться в тему?
В приложении Кодик ты найдёшь подробные уроки по CMake и C++, пошаговые упражнения, разбор ошибок и удобную практику прямо в телефоне или браузере.
А если хочешь быть в курсе новостей, новых фич и полезных материалов — подписывайся на наш Telegram-канал. Там уютно, по делу и с любовью к коду ❤️