Введение в 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: Структура проекта

Создадим простую структуру проекта:

Введение в CMake

`main.cpp` будет содержать простой код на C++:

Введение в CMake

Шаг 2: Создание CMakeLists.txt

Основной файл CMake: `CMakeLists.txt`, указывает CMake, как собирать проект.

Пример базового файла:

Введение в CMake

Здесь мы указываем, что наш проект называется "MyProject", устанавливаем стандарт C++ (в данном случае C++11), и добавляем исполняемый файл, который будет скомпилирован из файла `src/main.cpp`.

Шаг 3: Сборка проекта

Теперь, чтобы собрать проект, выполните следующие команды в терминале:

Введение в CMake

После выполнения этих команд CMake сгенерирует необходимые файлы для сборки и скомпилирует проект.

Установка библиотек в CMake

CMake позволяет легко подключать и устанавливать библиотеки. Рассмотрим пример установки сторонней библиотеки, такой как Boost.

Пример использования библиотеки Boost

Допустим, вы хотите использовать библиотеку Boost для работы со строками. В этом случае, файл `CMakeLists.txt` можно изменить следующим образом:

Введение в CMake

`find_package` - это команда CMake, которая ищет установленную библиотеку. Если библиотека найдена, ее директории и файлы автоматически подключаются к проекту.

Схема работы 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 рекомендуем следующие ресурсы:

  • Книга "Professional CMake" от Крэйга Скотта (Craig Scott) - отличная книга для тех, кто хочет глубже разобраться в возможностях и тонкостях использования CMake в крупных проектах.

Наши ссылки:

22
4 комментария

Для кого эта статья?

1
Ответить
Комментарий удалён модератором

Хрустик, спок

Ответить

Комментарий недоступен

Ответить

?

Ответить