<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF109:CMake - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF109:CMake&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 22:26:04 GMT</lastBuildDate>
		<item>
			<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF109:CMake&amp;diff=8663&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF109:CMake&amp;amp;diff=8663&amp;amp;oldid=8658&quot;&gt;(Различия между версиями)&lt;/a&gt;</description>
			<pubDate>Fri, 04 Sep 2009 13:38:48 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF109:CMake</comments>		</item>
		<item>
			<title>Crazy Rebel: Новая: : '''Новая серия!''' Кросс-платформенная система сборки для ваших приложений  ==Собираясь в путь==  {{Цикл/CM...</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF109:CMake&amp;diff=8658&amp;oldid=prev</link>
			<description>&lt;p&gt;Новая: : '''Новая серия!''' Кросс-платформенная система сборки для ваших приложений  ==Собираясь в путь==  {{Цикл/CM...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''Новая серия!''' Кросс-платформенная система сборки для ваших приложений&lt;br /&gt;
&lt;br /&gt;
==Собираясь в путь==&lt;br /&gt;
&lt;br /&gt;
{{Цикл/CMake}}&lt;br /&gt;
&lt;br /&gt;
: '''ЧАСТЬ 1''' Система сборки – неизменный спутник любого разработчика. К счастью, сегодня уже не обязательно вникать во все тонкости ''M4'' – '''Андрей Боровский''' представляет ''CMake''!&lt;br /&gt;
&lt;br /&gt;
Вот вам мой вариант теста для настоящего программиста: что неприятнее всего не найти? Кредитку, которой только что&lt;br /&gt;
расплачивался в ресторане, телефон прекрасной девушки, с которой вчера познакомился в метро, или файл сборки проекта&lt;br /&gt;
для той системы, в которой работаешь? Разумеется, ни одна из&lt;br /&gt;
этих проблем не стоит того, чтобы делать из нее трагедию. Даже&lt;br /&gt;
если кто-то сумеет воспользоваться вашей карточкой, деньги, скорее всего, удастся вернуть, потеря случайного телефонного номера&lt;br /&gt;
тоже не повод для грусти – кто знает, может оно и к лучшему, а&lt;br /&gt;
отсутствующий в исходниках файл можно восстановить, при условии, что вы понимаете структуру проекта и у вас под рукой есть&lt;br /&gt;
подходящие утилиты.&lt;br /&gt;
&lt;br /&gt;
Традиционно программисты, работающие в Linux (да и других Unix-системах) используют для сборки программ инструментарий GNU build system или ''Autotools'' (состоящий из утилит ''autoconf, automake, libtool, gnulib''). Именно с его помощью создаются знакомые всем нам сценарии ''configure'', которые и генерируют ''make''-файлы для сборки приложения. Система GNU build system настолько тесно связана с историей Linux и других открытых проектов, что «мантра» ''configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install'' рассматривается&lt;br /&gt;
некоторыми Unix-программистами как единственно верный способ установки ПО. К недостаткам ''Autotools'' можно отнести ее ориентацию на инструментарий разработчика GNU (''GNU make, GCC'' и т.п.),&lt;br /&gt;
который очень популярен на открытых Unix-платформах, но мало&lt;br /&gt;
распространен в других средах. Стремяcь заполнить этот пробел,&lt;br /&gt;
разработчики из компании Kitware создали свой собственный вариант кросс-платформенного генератора сборочных файлов – ''CMake''&lt;br /&gt;
(Cross-platform Make).&lt;br /&gt;
&lt;br /&gt;
Система ''CMake'' выбрана в качестве стандартного средства сборки KDE 4, и уже по одной этой причине заслуживает нашего внимания. Но у нее есть и собственные достоинства. Прежде всего, ''CMake''&lt;br /&gt;
является по-настоящему кросс-платформенным генератором проектов, позволяющим создавать их единые описания для Linux, других Unix-систем (включая Mac OS X) и Windows. Остановимся на&lt;br /&gt;
этом подробнее. Важное отличие Windows от Linux (с точки зрения&lt;br /&gt;
разработчика) заключается в отсутствии единого стандарта сборочных файлов. ''Microsoft Visual Studio'' использует свои файлы проектов, ''C++ Builder'' – свои, ''MinGW'' – свои. Преимущество ''CMake'' в том,что эта система способна генерировать «родные» сборочные файлы для всех перечисленных средств разработки (как и для многих&lt;br /&gt;
других). Кроме того, ''CMake'' стремится максимально использовать&lt;br /&gt;
фирменные средства генерации сборочных файлов – например, для&lt;br /&gt;
проектов ''Qt'' применяется ''qmake''. Вдобавок ''CMake'' обладает интеллектуальной системой поиска инструментов сборки и библиотек&lt;br /&gt;
на конкретной платформе (интроспекция) и автоматического конфигурирования. Благодаря этому она сама устанавливает многие&lt;br /&gt;
параметры сборочных файлов, которые в других случаях приходится задавать вручную. Например, в ОС Linux ''CMake'' найдет директорию, где находится требуемый программе набор виджетов, а под&lt;br /&gt;
Windows вам не придется указывать ей, где установлены ''Visual Studio'' или ''C++ Builder''. Все это делает пакет ''CMake'' весьма простым и удобным в использовании.&lt;br /&gt;
&lt;br /&gt;
Хотя в этих статьях мы будем рассматривать работу ''CMake'' в&lt;br /&gt;
основном на примере программ, написанных на ''C++'', она может пригодиться и тем, кто пишет на ''Java'' (и даже ''Fortran'').&lt;br /&gt;
&lt;br /&gt;
Схематично работу ''CMake'' можно описать следующим образом:&lt;br /&gt;
вначале создается файл '''CMakeLists.txt''', в котором описываются&lt;br /&gt;
параметры сборки (расположение исходных текстов, требуемые&lt;br /&gt;
внешние модули, цели сборки). Далее этот файл передается утилите&lt;br /&gt;
''cmake''. Результатом ее работы является файл, содержащий инструкции сборки приложения для конкретной платформы (''make''-файл&lt;br /&gt;
''GNU make, файл проекта ''Visual Studio'' и т.д.). Суть идеи заключается&lt;br /&gt;
в том, что описание процесса сборки в файле '''CMakeLists.txt''' абстрагировано как от конкретных особенностей отдельных систем (расположение файлов, возможности компиляторов), так и целых платформ. Читая общее описание процесса сборки из файла '''CMakeLists.txt''', программа ''cmake'' создает файл инструкций сборки, учитывающий специфику конкретной системы.&lt;br /&gt;
&lt;br /&gt;
Как же ''CMake'' удается быть такой «умной»? В ее основе лежит&lt;br /&gt;
мощный скриптовый язык, который используется как в файлах&lt;br /&gt;
'''CMakeLists.txt''', так и в специальных сценариях – модулях. Именно&lt;br /&gt;
в модулях реализованы такие функции ''CMake'', как поиск файлов&lt;br /&gt;
и проверка возможностей системы. Файлы модулей расположены&lt;br /&gt;
в поддиректории '''Modules''' каталога '''cmake'''. Их можно разделить на&lt;br /&gt;
три категории. Одна группа модулей предназначена для настройки&lt;br /&gt;
работы системы на конкретной платформе (Linux, Winodws, Mac OS,&lt;br /&gt;
BeOS и т.д.), вторая обеспечивает интеллектуальный поиск средств&lt;br /&gt;
разработки и различных вспомогательных утилит, а также провер-&lt;br /&gt;
ку их возможностей, а третья разыскивает библиотеки, требуемые&lt;br /&gt;
отдельным программам, и определяет их параметры.&lt;br /&gt;
&lt;br /&gt;
Важную роль в работе ''CMake'' играют также файлы шаблонов&lt;br /&gt;
для генерации различных файлов сборки. Поскольку файлы модулей и шаблонов отделены от самой утилиты ''cmake'' и написаны на&lt;br /&gt;
том же языке сценариев, что и файлы описания сборки, расширить&lt;br /&gt;
возможности ''CMake'' очень просто. ''CMake 2.6'' поставляется с тремя&lt;br /&gt;
сотнями модулей, которые адаптируют пакет для работы с множеством разных инструментов, начиная с компиляторов ''C++'' и ''Fortran'' и интерпретаторов ''Perl'' и ''Python'' и заканчивая такими библиотеками,&lt;br /&gt;
как ''OpenSceneGraph, SDL, Qt 4'' и ''wxWidgets''. Файлы модулей поставляются не только с дистрибутивами ''CMake'', но и вместе с некоторыми библиотеками, разработчики которых уже заинтересованы в&lt;br /&gt;
поддержке ''CMake''.&lt;/div&gt;</description>
			<pubDate>Fri, 04 Sep 2009 05:46:41 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF109:CMake</comments>		</item>
	</channel>
</rss>