CMake

FrBrGeorge нашёл пару статей по теме:

Авторский план лекции

  1. Что такое система сборки и для чего она нужна.
    1. IDE обычно — и система сборки тоже.
    2. Простейший пример на основе программы из двух файлов и команды make.
    3. Далее — сборка на компьютере друга — нам нужно разрешить зависимости (autotools: configure, make, make install).
    4. Конфигурирование опций (configure).
    5. Далее — кроссплатформенность.
  2. История того, почему я выбрал CMake: кроссплатформенность.
  3. Ключевые преимущества CMake:
    1. Сборка out-of-tree.
    2. Генерация файлов, нативных для платформы/IDE. Некоторые IDE сами поддерживают CMake нативно (KDevelop последних версий).
    3. Не только сборка, но и конфигурирование проекта (гораздо более быстрый, чем в autotools, поиск библиотек).
    4. Удобные средства конфигурирования исходных кодов (команда CONFIGURE).

    5. Интеграция с системой пакетирования CPack и системой тестирования CTest, а также с Dart — системой автоматизированной сборки (nightly builds).
    6. Экспортирование установленного проекта в CMake-файлах с возможностью быстрого подключения к другим проектам.
  4. Сравнение с другими кроссплатформенными системами сборки (scons, bjam, ant, qmake):
    1. SCons: плохо показал себя при попытке перемещения на него KDE, разработчиком приходилось самим патчить его, не было поддержки от разработчиков SCons.

    2. Ant: зависима от Java.

    3. Bjam: на работе лектора соседний отдел его использует, с другой стороны, раз boost постепенно переходит на CMake, то это неспроста :) Bjam, кроме того, не нативен вроде, т. е. не генерирует файлы для IDE.

  5. Для чего лектор использует CMake, помимо сборки
    1. Генерация документации по коду. Язык документации (русский/английский) выбирается автоматически в зависимости от языка системы. Версия библиотек автоматически включается в документацию.
    2. Генерация RPM-пакетов.
    3. Версия пакета задается в файле CMake и может быть использована при конфигурировании.
    4. Использование различных настроек оптимизации.
  6. Обзор синтаксиса CMake-файлов, простейшие проекты.