CMake

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

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

  1. Что такое система сборки и для чего она нужна.
    1. IDE обычно — и система сборки тоже.
    2. Простейший пример на основе программы из двух файлов и команды make.
    3. Далее — сборка на компьютере друга — нам нужно разрешить зависимости (autotools: configure, make, make install).
    4. Конфигурирование опций (configure).
    5. Далее — кроссплатформенность.
  2. История того, почему я выбрал CMake: кроссплатформенность.
  3. Сравнение с другими кроссплатформенными системами сборки (scons, bjam, ant, qmake) и ключевые преимущества CMake:
    1. Сборка out-of-tree.
    2. Генерация файлов, нативных для платформы/IDE. Некоторые IDE сами поддерживают CMake нативно (KDevelop последних версий).
    3. Не только сборка, но и конфигурирование проекта (гораздо более быстрый, чем в autotools, поиск библиотек).
    4. Удобные средства конфигурирования исходных кодов (команда CONFIGURE).
    5. Интеграция с системой дистрибутирования CPack и системой тестирования CTest, а также с Dart — системой ночных билдов.
    6. Экспортирование установленного проекта в CMake-файлах с возможностью быстрого подключения к другим проектам.
    7. SCons плохо показал себя при попытке перемещения на него KDE, разработчиком приходилось самим патчить его, не было поддержки от разработчиков SCons.
    8. Ant зависима от Java.
    9. Про Bjam толком ничего не могу сказать, у нас соседний отдел его использует, но раз boost постепенно переходит на CMake, то это неспроста :) Но он не нативен вроде, т.е. не генерит файлы для IDE.

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