LXF99:CMake

Материал из Linuxformat.

Перейти к: навигация, поиск

Что за штука CMake?

Эй, разработчики! Все знают, что Make – программа путаная и обветшалая; Пол Хадсон за ручку сведет нас в счастливую страну CMake!

  • Make — мой архивражина! Ради Бога, скажите: вы ведь избавите меня от нее?
Я – нет, а вот команда CMake собирается! Хотя и это еще не факт, ведь вытеснить Make пытались неоднократно, но разве только Ant добилась умеренного успеха. Несомненно, Make будет с нами еще долгие годы, даже если CMake победит.
  • Беда-а-а! Ненавижу ее манеру различать табуляцию и пробелы – Make до того неудобна, даже для бывалых линуксоидов!
Я согласен – и, по-моему, большинство Linux-программистов тоже. Но при всех достоинствах CMake, Make никуда не денется: уж больно много проектов с ней связано.
  • Выходит, у Cmake есть достоинства? Да говорите же!
ОК – начнем с начала. «С» в названии проекта означает «кроссплатформенная» и символизирует отличие от Make: программа не выполняет компиляцию, а лишь создает файлы, необходимые для компиляции на конкретной системе. Предельно упрощая, CMake – лишь тонкая оболочка вокруг Make, призванная скрыть уродство последней. Главное же достоинство CMake – переносимость и на OS X, и на Windows: там, где не будет Make, она воспользуется «родным» инструментом другой системы.
  • Постойте… так Make все-таки придется оставить?
Make или другую эквивалентную программу для сборки ПО. Причем программисты одной команды не обязаны использовать одну и ту же утилиту: работая с Qt под Linux, вы выберете Qmake, а ваши друзья в Windows предпочтут стандартные средства Visual Studio. Вы можете использовать общие файлы конфигурации CMake, то есть все сделанные вами изменения тут же появятся на всех платформах. Более того, команде CMake незачем писать подключаемые модули для поддержки разных IDE: ведь все программы останутся при своих «родных» форматах сборки, вмешиваться в которые CMake не будет.
  • Значит, даже при победе CMake будет не обойтись без Make? Ну и где тут особое улучшение?
Да, пользоваться Make придется, но только косвенно – CMake создаст все необходимые файлы, избавив вас от мучений. При запуске CMake нужные файлы генерируются и хранятся в директории /source, и обычно вам даже заглядывать туда не надо.
  • Ладно, одна причина для обновления есть, но этого явно мало. Зачем мне суетиться?
Мало причин? Вот вам четыре миллиона строк причин: на CMake переключается KDE 4. Намаявшись с GNU Autotools, разработчики KDE потратили кучу времени на поиски инструментов-альтернатив и в итоге выбрали CMake – как наиболее гибкую и модифицируемую. Именно модифицируемость сыграла решающую роль: ведь KDE – громадный проект со специфичными требованиями. Команды KDE и CMake наладили тесное взаимодействие, CMake значительно усовершенствовалась, стала еще надежнее и стабильнее, а главное – получила мощнейшую поддержку!
  • И CMake справляется с большими проектами?
Разумеется! CMake прекрасно взаимодействует с KDevelop, и способна собрать любой компонент KDE – от kioslave до Kpart. Вы получаете неограниченный контроль над системой зависимостей, и я буду очень удивлен, если чем-то окажется нельзя управлять…

«Самый известный Linux-проект, перешедший на CMake – настольная издательская система Scribus».

  • Судя по вашим словам, CMake используется только в KDE…
Вовсе нет, но не стану отрицать, что CMake находитсяв самом начале пути. Другой известный Linux-проект, уже переключившийся на CMakeScribus; Питер Линнелл [Peter Linnell], web-мастер Scribus, сказал: «Установив CMake, я за 10 минут во все вник и встроил файлы CMake в наш исходный код. Красота!». Кроме KDE и Scribus, CMake поддерживает SWIG и LaTeX, а это уже путь к всеобщему признанию.
  • Трудно ли настроить CMake?
Ответ зависит от того, насколько сложной вам казалась Make. Скажем прямо: простой программой Make не считал никто. Команды CMake напоминают легкий программный код, пользоваться которым сравнительно несложно, если у вас есть минимальный опыт программирования – хотя бы написание простенького JavaScript. Многое сделано для автоматизации процесса, перевода рутинной работы на задний план, чтобы вместо составления файлов заниматься собственно программированием.
  • Вы упоминали, что CMake – кроссплатформенная программа; на каких же платформах она работает в действительности?
Известные системы поддерживаются все: Linux, Windows, OS X, Solaris, FreeBSD, HP-UX, IRIX, BeOS и QNX; любая система, «признающая» Make, пригодна для CMake. Куда важнее, что программа совместима с KDevelop, Xcode и Visual Studio, а ведь они-то и интересуют профессиональных программистов! Естественно, поддержка улучшается с каждой новой версией.
  • А в чем преимущество CMake по сравнению, скажем, с Ant?
Ant – полная, радикальная замена Make. Радикальность здесь и преимущество, и недостаток: если предпочесть Ant, то и ОС, и все остальное ПО должны поддерживать ее. Что касается ОС, то Ant написана на Java, и проблемы с системой маловероятны.
  • Подозрительно: «Java» и «нет проблем» в одном предложении встречаются редко…
И то правда, но допустим, что все работает гладко. Реальная проблема Ant состоит в том, что ее должна поддерживать среда разработки – нужно заботиться об установке нужных модулей расширения вашего ПО, или надеяться на готовую поддержку Ant. Тот факт, что CMake не отменяет Make – явное преимущество: ваш инструментарий остается тем же.
  • И вы обещаете, что мне не придется читать файлы, созданные CMake?
Обещаем!
  • А можно ли при необходимости «подправить» программу?
Программа выпускается под BSD-подобной лицензией, допускающей неограниченное использование, в том числе и в составе коммерческих продуктов (разумеется, при соответствующем оформлении). Изменяйте исходный код на здоровье! Если боязно трогать исходник, расширить программу можно и без этого – она действительно очень гибкая.
  • ОК, уже хочу попробовать. А если я увязну, куда обратиться за дополнительными сведениями?
Сайт онлайн-документации CMakehttp://www.cmake.org/HTML/Documentation.html, но для типичных вопросов предусмотрен http://www.cmake.org/Wiki/CMake_FAQ. Есть прекрасная статья о причинах перехода KDE 4 на CMake: http://lwn.net/Articles/188693.

Если вы завязли здорово, или решили использовать CMake в серьезной работе, обратитесь к книге Mastering CMake: http://www.kitware.com/products/CMakebook.html. Много информации о CMake можно найти на CMake wiki (http://www.cmake.org/Wiki/CMake), но мы особо рекомендуем руководство по быстрому ознакомлению (http://www.CMake.org/HTML/Examples.html), учебник CMake/Eclipse (http://www.CMake.org/Wiki/CMake:Eclipse), и азбуку Ctest, инструмента тестирования CMake (http://www.CMake.org/Wiki/CMake_Testing_With_CTest). Как видите, чтения хватает, но – вспомните эту возню с освоением Make, и вы поймете, что не все так плохо! LXF

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию