CMake — первая программа
CMake — первая программа
CMake генерирует файлы сборки (Ninja, Make, Visual Studio) из CMakeLists.txt. Это стандарт для open-source C++ и для Qt.
Теория конфигураций: Конфигурация и сборка. Тесты: Google Test и Catch2.
Структура
hello-cmake/
├── CMakeLists.txt
├── src/
│ └── main.cpp
└── include/
└── greet.hpp
CMakeLists.txt (корень)
cmake_minimum_required(VERSION 3.20)
project(hello_cmake VERSION 0.1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(hello
src/main.cpp
)
target_include_directories(hello PRIVATE include)
Исходники
include/greet.hpp:
#pragma once
#include <string>
std::string greet(const std::string& name);
src/main.cpp:
#include "greet.hpp"
#include <iostream>
int main() {
std::cout << greet("CMake") << '\n';
return 0;
}
Добавьте src/greet.cpp с реализацией greet или inline в заголовке для минимального примера.
src/greet.cpp:
#include "greet.hpp"
std::string greet(const std::string& name) {
return "Hello, " + name + "!";
}
И в CMakeLists.txt: src/greet.cpp в add_executable.
Сборка
cmake -S . -B build -G Ninja
cmake --build build
./build/hello # Linux/macOS
build\Debug\hello.exe # MSVC multi-config
Release:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Подключение библиотеки (FetchContent)
include(FetchContent)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt.git
GIT_TAG 10.2.1
)
FetchContent_MakeAvailable(fmt)
target_link_libraries(hello PRIVATE fmt::fmt)
Для production чаще используют vcpkg или Conan.
Связанные материалы
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). C++ как язык системного программирования - ключевые принципы, область применения и инженерные требования к коду. Экосистема приложений на C++ - области применения языка от системного ПО до высоконагруженных вычислений. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Гайд по установке и настройке с написанием первой программы и её запуском. Директива препроцессора include используется для подключения заголовочных файлов в исходный код. Она сообщает компилятору вставить содержимое указанного файла в текущее место перед началом компиляции. Конфигурация — это набор правил и переменных, которые управляют процессом превращения исходного текста в исполняемый продукт. Примеры простых и полезных консольных приложений с демонстрацией концепций языка. Модульные тесты с GTest и Catch2 в CMake-проекте — отдельный test target и запуск. Набор советов, правил, принципов и обычаев в разработке на этом языке. Типизация, набор правил определения типа данных значений языка. Операторы и выражения в C++ - семантика операций, приоритеты и построение корректной вычислительной логики. Циклы и управляющие конструкции в C++ - семантика ветвлений, повторений и контроль потока на уровне языка.C++ - язык системного программирования
Экосистема приложений на C++
Что требуется знать перед началом изучения языка программирования C++
Первая программа на C++
Начало работы с C++
Конфигурация и сборка в C++
Простые приложения на C++
Google Test и Catch2 в C++
Рекомендации по разработке на C++
Типы данных в C++
Операторы и выражения в C++
Циклы и управляющие конструкции в C++