Введение в CMake
Что такое CMake?
CMake (Cross-Platform Make) — это система сборки, позволяющая создавать проекты, которые могут компилироваться на различных платформах и с различными компиляторами. Основная цель CMake — сделать процесс генерации Makefile'ов или проектов для IDE простым и независимым от платформы или компилятора. Это особенно полезно для крупных проектов, которые могут быть собраны на разных операционных системах (Linux, Windows, macOS) с использованием различных инструментов сборки (например, Make, Ninja, Visual Studio).
История CMake
Разработка CMake началась в 1999 году в ответ на потребность в кроссплатформенной среде сборки для Insight Segmentation and Registration Toolkit. Проект финансируется национальной медицинской библиотекой США в рамках проекта Visible Human. Он был частично вдохновлен pcmaker, предшественником CMake, который был создан Кеном Мартином и другими разработчиками для поддержки создания Visualization Toolkit. pcmaker - это программа на языке Си, которая преобразовывала файлы Make в аналоги MS Windows NMake. В Kitware Билл Хоффман смешал компоненты pcmaker со своими собственными идеями, стремясь имитировать функциональность Unix скриптов настройки. CMake был впервые внедрен в 2000 году и получил дальнейшее развитие в 2001 году.
Для кого эта статья?
Эта статья предназначена для начинающих разработчиков, которые хотят научиться пользоваться системой сборки CMake. Она подойдет как для тех, кто уже имеет базовые знания о компиляции программ на C++, так и для тех, кто сталкивается с этой темой впервые. Статья сфокусирована на введении в основы работы с CMake и включает примеры создания базового проекта, установки библиотек, а также описывает базовые команды, которые пригодятся для работы с системой.
Базовый проект на CMake
Для начала создадим базовый C++ проект с использованием CMake.
Шаг 1: Структура проекта
Создадим простую структуру проекта:
`main.cpp` будет содержать простой код на C++:
Шаг 2: Создание CMakeLists.txt
Основной файл CMake: `CMakeLists.txt`, указывает CMake, как собирать проект.
Пример базового файла:
Здесь мы указываем, что наш проект называется "MyProject", устанавливаем стандарт C++ (в данном случае C++11), и добавляем исполняемый файл, который будет скомпилирован из файла `src/main.cpp`.
Шаг 3: Сборка проекта
Теперь, чтобы собрать проект, выполните следующие команды в терминале:
После выполнения этих команд CMake сгенерирует необходимые файлы для сборки и скомпилирует проект.
Установка библиотек в CMake
CMake позволяет легко подключать и устанавливать библиотеки. Рассмотрим пример установки сторонней библиотеки, такой как Boost.
Пример использования библиотеки Boost
Допустим, вы хотите использовать библиотеку Boost для работы со строками. В этом случае, файл `CMakeLists.txt` можно изменить следующим образом:
`find_package` - это команда CMake, которая ищет установленную библиотеку. Если библиотека найдена, ее директории и файлы автоматически подключаются к проекту.
Схема работы CMake
Базовые команды CMake
Базовые команды CMake, которые необходимо знать:
- `cmake_minimum_required(VERSION x.x)`: Устанавливает минимальную версию CMake для сборки.
- `project(ProjectName)`: Указывает имя проекта.
- `set()`: Позволяет устанавливать переменные в проекте. Например, можно задать стандарт C++ через `set(CMAKE_CXX_STANDARD 11)`.
- `add_executable(Name file.cpp)`: Добавляет исполняемый файл, который будет собираться из указанных исходников.
- `find_package(PackageName)`: Используется для поиска установленных библиотек.
- `target_link_libraries(Target Libs)`: Связывает указанные библиотеки с исполняемым файлом.
Лучшие материалы для дальнейшего изучения CMake
Для углубленного изучения CMake рекомендуем следующие ресурсы:
- Официальная документация CMake - это основной источник информации, где можно найти примеры использования и описание команд CMake.
- Книга "Professional CMake" от Крэйга Скотта (Craig Scott) - отличная книга для тех, кто хочет глубже разобраться в возможностях и тонкостях использования CMake в крупных проектах.
- Репозиторий GitHub — CMake Examples - этот репозиторий содержит множество примеров, которые помогут освоить различные аспекты работы с CMake.
Наши ссылки: