LXF99:CMake
(Новая: ==Что за штука CMake?== Эй, разработчики! Все знают, что ''Make'' – программа путаная и обветшалая; '''Пол Хадсо...) |
Ewgen (обсуждение | вклад) м (оформление, ошибки, категории) |
||
Строка 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'' или другую эквивалентную программу для сборки ПО. Причем программисты одной команды не обязаны использовать одну и ту же утилиту: работая | + | |
* '''Значит, даже при победе ''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]] |
Текущая версия на 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. Вы получаете неограниченный контроль над системой зависимостей, и я буду очень удивлен, если чем-то окажется нельзя управлять…
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Судя по вашим словам, CMake используется только в KDE…
- Вовсе нет, но не стану отрицать, что CMake находитсяв самом начале пути. Другой известный Linux-проект, уже переключившийся на CMake – Scribus; Питер Линнелл [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-подобной лицензией, допускающей неограниченное использование, в том числе и в составе коммерческих продуктов (разумеется, при соответствующем оформлении). Изменяйте исходный код на здоровье! Если боязно трогать исходник, расширить программу можно и без этого – она действительно очень гибкая.
- ОК, уже хочу попробовать. А если я увязну, куда обратиться за дополнительными сведениями?
- Сайт онлайн-документации 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