Журнал LinuxFormat - перейти на главную

LXF99:CMake

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: ==Что за штука CMake?== Эй, разработчики! Все знают, что ''Make'' – программа путаная и обветшалая; '''Пол Хадсо...)
 
м (оформление, ошибки, категории)
 
Строка 4: Строка 4:
  
 
* ''' ''Make'' — мой архивражина! Ради Бога, скажите: вы ведь избавите меня от нее?'''
 
* ''' ''Make'' — мой архивражина! Ради Бога, скажите: вы ведь избавите меня от нее?'''
 
+
: Я – нет, а вот команда ''CMake'' собирается! Хотя и это еще не факт, ведь вытеснить ''Make'' пытались неоднократно, но разве только ''Ant'' добилась умеренного успеха. Несомненно, ''Make'' будет с нами еще долгие годы, даже если ''CMake'' победит.
Я – нет, а вот команда ''CMake'' собирается! Хотя и это еще не факт, ведь вытеснить ''Make'' пытались неоднократно, но разве только ''Ant'' добилась умеренного успеха. Несомненно, ''Make'' будет с нами еще долгие годы, даже если ''CMake'' победит.
+
  
 
* '''Беда-а-а! Ненавижу ее манеру различать табуляцию и пробелы – ''Make'' до того неудобна, даже для бывалых линуксоидов!'''
 
* '''Беда-а-а! Ненавижу ее манеру различать табуляцию и пробелы – ''Make'' до того неудобна, даже для бывалых линуксоидов!'''
 
+
: Я согласен – и, по-моему, большинство Linux-программистов тоже. Но при всех достоинствах ''CMake'', ''Make'' никуда не денется: уж больно много проектов с ней связано.
Я согласен – и, по-моему, большинство Linux-программистов тоже. Но при всех достоинствах ''CMake'', ''Make'' никуда не денется: уж больно много проектов с ней связано.
+
  
 
* '''Выходит, у ''Cmake'' есть достоинства? Да говорите же!'''
 
* '''Выходит, у ''Cmake'' есть достоинства? Да говорите же!'''
 
+
: ОК – начнем с начала. «'''С'''» в названии проекта означает «кроссплатформенная» и символизирует отличие от ''Make'': программа не выполняет компиляцию, а лишь создает файлы, необходимые для компиляции на конкретной системе. Предельно упрощая, ''CMake'' – лишь тонкая оболочка вокруг ''Make'', призванная скрыть уродство последней. Главное же достоинство ''CMake'' – переносимость и на OS X, и на Windows: там, где не будет ''Make'', она воспользуется «родным» инструментом другой системы.
ОК – начнем с начала. «'''С'''» в названии проекта означает «кроссплатформенная» и символизирует отличие от ''Make'': программа не выполняет компиляцию, а лишь создает файлы, необходимые для компиляции на конкретной системе. Предельно упрощая, ''CMake'' – лишь тонкая оболочка вокруг ''Make'', призванная скрыть уродство последней. Главное же достоинство ''CMake'' – переносимость и на OS X, и на Windows: там, где не будет ''Make'', она воспользуется «родным» инструментом другой системы.
+
  
 
* '''Постойте… так ''Make'' все-таки придется оставить?'''
 
* '''Постойте… так ''Make'' все-таки придется оставить?'''
 
+
: ''Make'' или другую эквивалентную программу для сборки ПО. Причем программисты одной команды не обязаны использовать одну и ту же утилиту: работая с Qt под Linux, вы выберете ''Qmake'', а ваши друзья в Windows предпочтут стандартные средства Visual Studio. Вы можете использовать общие файлы конфигурации ''CMake'', то есть все сделанные вами изменения тут же появятся на всех платформах. Более того, команде ''CMake'' незачем писать подключаемые модули для поддержки разных IDE: ведь все программы останутся при своих «родных» форматах сборки, вмешиваться в которые ''CMake'' не будет.
''Make'' или другую эквивалентную программу для сборки ПО. Причем программисты одной команды не обязаны использовать одну и ту же утилиту: работая'с Qt под Linux, вы выберете ''Qmake'', а ваши друзья в Windows предпочтут стандартные средства Visual Studio. Вы можете использовать общие файлы конфигурации ''CMake'', то есть все сделанные вами изменения тут же появятся на всех платформах. Более того, команде ''CMake'' незачем писать подключаемые модули для поддержки разных IDE: ведь все программы останутся при своих «родных» форматах сборки, вмешиваться в которые ''CMake'' не будет.
+
  
 
* '''Значит, даже при победе ''CMake'' будет не обойтись без ''Make''? Ну и где тут особое улучшение?'''
 
* '''Значит, даже при победе ''CMake'' будет не обойтись без ''Make''? Ну и где тут особое улучшение?'''
 
+
: Да, пользоваться ''Make'' придется, но только косвенно – ''CMake'' создаст все необходимые файлы, избавив вас от мучений. При запуске ''CMake'' нужные файлы генерируются и хранятся в директории '''/source''', и обычно вам даже заглядывать туда не надо.
Да, пользоваться ''Make'' придется, но только косвенно – ''CMake'' создаст все необходимые файлы, избавив вас от мучений. При запуске ''CMake'' нужные файлы генерируются и хранятся в директории '''/source''', и обычно вам даже заглядывать туда не надо.
+
  
 
* '''Ладно, одна причина для обновления есть, но этого явно мало. Зачем мне суетиться?'''
 
* '''Ладно, одна причина для обновления есть, но этого явно мало. Зачем мне суетиться?'''
 
+
: Мало причин? Вот вам четыре миллиона строк причин: на ''CMake'' переключается KDE 4. Намаявшись с ''GNU Autotools'', разработчики KDE потратили кучу времени на поиски инструментов-альтернатив и в итоге выбрали ''CMake'' – как наиболее гибкую и модифицируемую. Именно модифицируемость сыграла решающую роль: ведь KDE – громадный проект со специфичными требованиями. Команды KDE и ''CMake'' наладили тесное взаимодействие, ''CMake'' значительно усовершенствовалась, стала еще надежнее и стабильнее, а главное – получила мощнейшую поддержку!
Мало причин? Вот вам четыре миллиона строк причин: на ''CMake'' переключается KDE 4. Намаявшись с ''GNU Autotools'', разработчики KDE потратили кучу времени на поиски инструментов-альтернатив и в итоге выбрали ''CMake'' – как наиболее гибкую и модифицируемую. Именно модифицируемость сыграла решающую роль: ведь KDE – громадный проект со специфичными требованиями. Команды KDE и ''CMake'' наладили тесное взаимодействие, ''CMake'' значительно усовершенствовалась, стала еще надежнее и стабильнее, а главное – получила мощнейшую поддержку!
+
  
 
* '''И ''CMake'' справляется с большими проектами?'''
 
* '''И ''CMake'' справляется с большими проектами?'''
 
+
: Разумеется! ''CMake'' прекрасно взаимодействует с ''KDevelop'', и способна собрать любой компонент KDE – от ''kioslave'' до ''Kpart''. Вы получаете неограниченный контроль над системой зависимостей, и я буду очень удивлен, если чем-то окажется нельзя управлять…
Разумеется! ''CMake'' прекрасно взаимодействует с ''KDevelop'', и способна собрать любой компонент KDE – от ''kioslave'' до ''Kpart''. Вы получаете неограниченный контроль над системой зависимостей, и я буду очень удивлен, если чем-то окажется нельзя управлять…
+
  
 
{{Врезка
 
{{Врезка
Строка 38: Строка 31:
  
 
* '''Судя по вашим словам, ''CMake'' используется только в KDE…'''
 
* '''Судя по вашим словам, ''CMake'' используется только в KDE…'''
 
+
: Вовсе нет, но не стану отрицать, что ''CMake'' находитсяв самом начале пути. Другой известный Linux-проект, уже переключившийся на ''CMake'' – ''Scribus''; '''Питер Линнелл''' [Peter Linnell], web-мастер ''Scribus'', сказал: «Установив ''CMake'', я за 10 минут во все вник и встроил файлы ''CMake'' в наш исходный код. Красота!». Кроме KDE и ''Scribus'', ''CMake'' поддерживает ''SWIG'' и ''LaTeX'', а это уже путь к всеобщему признанию.
Вовсе нет, но не стану отрицать, что ''CMake'' находитсяв самом начале пути. Другой известный Linux-проект, уже переключившийся на ''CMake'' – ''Scribus''; '''Питер Линнелл''' [Peter Linnell], web-мастер ''Scribus'', сказал: «Установив ''CMake'', я за 10 минут во все вник и встроил файлы ''CMake'' в наш исходный код. Красота!». Кроме KDE и ''Scribus'', ''CMake'' поддерживает ''SWIG'' и ''LaTeX'', а это уже путь к всеобщему признанию.
+
  
 
* '''Трудно ли настроить ''CMake''?'''
 
* '''Трудно ли настроить ''CMake''?'''
 
+
: Ответ зависит от того, насколько сложной вам казалась ''Make''. Скажем прямо: простой программой ''Make'' не считал никто. Команды ''CMake'' напоминают легкий программный код, пользоваться которым сравнительно несложно, если у вас есть минимальный опыт программирования – хотя бы написание простенького JavaScript. Многое сделано для автоматизации процесса, перевода рутинной работы на задний план, чтобы вместо составления файлов заниматься собственно программированием.
Ответ зависит от того, насколько сложной вам казалась ''Make''. Скажем прямо: простой программой ''Make'' не считал никто. Команды ''CMake'' напоминают легкий программный код, пользоваться которым сравнительно несложно, если у вас есть минимальный опыт программирования – хотя бы написание простенького JavaScript. Многое сделано для автоматизации процесса, перевода рутинной работы на задний план, чтобы вместо составления файлов заниматься собственно программированием.
+
  
 
* '''Вы упоминали, что ''CMake'' – кроссплатформенная программа; на каких же платформах она работает в действительности?'''
 
* '''Вы упоминали, что ''CMake'' – кроссплатформенная программа; на каких же платформах она работает в действительности?'''
 
+
: Известные системы поддерживаются все: Linux, Windows, OS X, Solaris, FreeBSD, HP-UX, IRIX, BeOS и QNX; любая система, «признающая» ''Make'', пригодна для ''CMake''. Куда важнее, что программа совместима с KDevelop, Xcode и Visual Studio, а ведь они-то и интересуют профессиональных программистов! Естественно, поддержка улучшается с каждой новой версией.
Известные системы поддерживаются все: Linux, Windows, OS X, Solaris, FreeBSD, HP-UX, IRIX, BeOS и QNX; любая система, «признающая» ''Make'', пригодна для ''CMake''. Куда важнее, что программа совместима с KDevelop, Xcode и Visual Studio, а ведь они-то и интересуют профессиональных программистов! Естественно, поддержка улучшается с каждой новой версией.
+
  
 
* '''А в чем преимущество ''CMake'' по сравнению, скажем, с ''Ant''?'''
 
* '''А в чем преимущество ''CMake'' по сравнению, скажем, с ''Ant''?'''
 
+
: ''Ant'' – полная, радикальная замена ''Make''. Радикальность здесь и преимущество, и недостаток: если предпочесть ''Ant'', то и ОС, и все остальное ПО должны поддерживать ее. Что касается ОС, то ''Ant'' написана на Java, и проблемы с системой маловероятны.
''Ant'' – полная, радикальная замена ''Make''. Радикальность здесь и преимущество, и недостаток: если предпочесть ''Ant'', то и ОС, и все остальное ПО должны поддерживать ее. Что касается ОС, то ''Ant'' написана на Java, и проблемы с системой маловероятны.
+
  
 
* '''Подозрительно: «Java» и «нет проблем» в  одном предложении встречаются редко…'''
 
* '''Подозрительно: «Java» и «нет проблем» в  одном предложении встречаются редко…'''
 
+
: И то правда, но допустим, что все работает гладко. Реальная проблема ''Ant'' состоит в том, что ее должна поддерживать среда разработки – нужно заботиться об установке нужных модулей расширения вашего ПО, или надеяться на готовую поддержку ''Ant''. Тот факт, что ''CMake'' не отменяет ''Make'' – явное преимущество: ваш инструментарий остается тем же.
И то правда, но допустим, что все работает гладко. Реальная проблема ''Ant'' состоит в том, что ее должна поддерживать среда разработки – нужно заботиться об установке нужных модулей расширения вашего ПО, или надеяться на готовую поддержку ''Ant''. Тот факт, что ''CMake'' не отменяет ''Make'' – явное преимущество: ваш инструментарий остается тем же.
+
  
 
* '''И вы обещаете, что мне не придется читать файлы, созданные ''CMake''?'''
 
* '''И вы обещаете, что мне не придется читать файлы, созданные ''CMake''?'''
 
+
: Обещаем!
Обещаем!
+
  
 
* '''А можно ли при необходимости «подправить»  программу?'''
 
* '''А можно ли при необходимости «подправить»  программу?'''
 
+
: Программа выпускается под BSD-подобной лицензией, допускающей неограниченное использование, в том числе и в составе коммерческих продуктов (разумеется, при соответствующем оформлении). Изменяйте исходный код на здоровье! Если боязно трогать исходник, расширить программу можно и без этого – она действительно очень гибкая.
Программа выпускается под BSD-подобной лицензией, допускающей неограниченное использование, в том числе и в составе коммерческих продуктов (разумеется, при соответствующем оформлении). Изменяйте исходный код на здоровье! Если боязно трогать исходник, расширить программу можно и без этого – она действительно очень гибкая.
+
  
 
* '''ОК, уже хочу попробовать. А если я увязну, куда обратиться за дополнительными сведениями?'''
 
* '''ОК, уже хочу попробовать. А если я увязну, куда обратиться за дополнительными сведениями?'''
 +
: Сайт онлайн-документации ''CMake'' – http://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'''
  
Сайт онлайн-документации ''CMake'' – http://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'''
+
[[Категория:CMake]]

Текущая версия на 16:26, 30 октября 2011

[править] Что за штука 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

Персональные инструменты
купить
подписаться
Яндекс.Метрика