<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог Erik’а &#187; qt</title>
	<atom:link href="http://home.edstudio.net.ru/tag/qt/feed/" rel="self" type="application/rss+xml" />
	<link>http://home.edstudio.net.ru</link>
	<description>Заметки ни о чём и обо всём</description>
	<lastBuildDate>Sun, 18 Apr 2010 16:32:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Sapphire 3D Surfaces v0.2.1</title>
		<link>http://home.edstudio.net.ru/2010/04/sapphire-3d-surfaces-v0-2-1/</link>
		<comments>http://home.edstudio.net.ru/2010/04/sapphire-3d-surfaces-v0-2-1/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 16:32:09 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Основная]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d surfaces]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[sapphire]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=323</guid>
		<description><![CDATA[В&#160;продолжение записи Sapphire 3D Surfaces v0.2 обновление от&#160;18.04.10&#160;&#8212; Sapphire 3D Surfaces v0.2.1. Скачать Sapphire 3D Surfaces v0.2.1: Windows Installer (XP/Vista/7&#215;86) &#124; .tar.gz &#124; .tar.bz2.]]></description>
			<content:encoded><![CDATA[<p>В&nbsp;продолжение записи <a href="http://home.edstudio.net.ru/2010/03/sapphire-3d-surfaces-v0-2/" target="_blank" title="Sapphire 3D Surfaces v0.2">Sapphire 3D Surfaces v0.2</a> обновление от&nbsp;<nobr>18.04.10</nobr>&nbsp;&mdash; Sapphire 3D Surfaces v0.2.1.</p>
<p><strong>Скачать Sapphire 3D Surfaces v0.2.1</strong>: <a href="http://download.shamangrad.net/s3ds/Sapphire-3D-Surfaces-0.2.1-win32.exe" target="_blank">Windows Installer (XP/Vista/7&times;86)</a> | <a href="http://download.shamangrad.net/s3ds/Sapphire-3D-Surfaces-0.2.1-sources.tar.gz" target="_blank">.tar.gz</a> | <a href="http://download.shamangrad.net/s3ds/Sapphire-3D-Surfaces-0.2.1-sources.tar.bz2" target="_blank">.tar.bz2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2010/04/sapphire-3d-surfaces-v0-2-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sapphire 3D Surfaces v0.2</title>
		<link>http://home.edstudio.net.ru/2010/03/sapphire-3d-surfaces-v0-2/</link>
		<comments>http://home.edstudio.net.ru/2010/03/sapphire-3d-surfaces-v0-2/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 15:24:23 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Основная]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[3d surfaces]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[sapphire]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=310</guid>
		<description><![CDATA[Вчера, 09.03.10, вышел релиз Sapphire 3D Surfaces v0.2. Долго старались и&#160;наконец изобразали Что&#160;же такое есть Sapphire 3D Surfaces? Приложение предоставляет базовые возможности для построения z&#160;= f&#160;(x, y) функций и&#160;параметрический функций (x&#160;= x&#160;(u, v), y&#160;= y&#160;(u, v) и&#160;z&#160;= z&#160;(u, v)) в&#160;трёхмерном пространстве. Собственно, говорить тут больше нечего, можно посмотреть: Скриншоты Зависимости muParser&#160;&#8212; кросс-платформенный математический парсер. Ссылки [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера, <nobr>09.03.10</nobr>, вышел релиз Sapphire 3D Surfaces v0.2.</p>
<p>Долго старались и&nbsp;наконец изобразали <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-310"></span></p>
<p>Что&nbsp;же такое есть Sapphire 3D Surfaces? Приложение предоставляет базовые возможности для построения <em>z&nbsp;= f&nbsp;(x, y)</em> функций и&nbsp;параметрический функций (<em>x&nbsp;= x&nbsp;(u, v)</em>, <em>y&nbsp;= y&nbsp;(u, v)</em> и&nbsp;<em>z&nbsp;= z&nbsp;(u, v)</em>) в&nbsp;трёхмерном пространстве.</p>
<p>Собственно, говорить тут больше нечего, можно посмотреть:</p>
<h2>Скриншоты</h2>
<p><img alt="2 функции z = f(x, u) и 1 параметрическая" src="http://download.shamangrad.net/s3ds/screenshots/1.png" title="Sapphire 3D Surfaces" class="aligncenter" /></p>
<p><img alt="2 функции z = f(x, y) (1 скрыта) и 1 параметрическая" src="http://download.shamangrad.net/s3ds/screenshots/2.png" title="Sapphire 3D Surfaces" class="aligncenter" /></p>
<h2>Зависимости</h2>
<p><a href="http://sourceforge.net/projects/muparser/">muParser</a>&nbsp;&mdash; <nobr>кросс-платформенный</nobr> математический парсер.</p>
<h2>Ссылки</h2>
<p><strong>Версия 0.2</strong>: <a href="http://download.shamangrad.net/s3ds/Sapphire-3D-Surfaces-0.2-win32.exe" target="_blank">Windows Installer (XP/Vista/7&times;86)</a> | <a href="http://download.shamangrad.net/s3ds/Sapphire-3D-Surfaces-0.2-sources.tar.gz" target="_blank">.tar.gz</a> | <a href="http://download.shamangrad.net/s3ds/Sapphire-3D-Surfaces-0.2-sources.tar.bz2" target="_blank">.tar.bz2</a>.</p>
<p><a href="http://shamangrad.net/project.php?act=view&#038;prj=s3ds">Страница проекта на&nbsp;&laquo;Шаманграде&raquo;</a>.</p>
<p><a href="http://qt-apps.org/content/show.php/Sapphire+3D+Surfaces?content=118944">Страница проекта на&nbsp;<nobr>qt-apps</nobr>.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2010/03/sapphire-3d-surfaces-v0-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Создание чекабельной кнопки с меню</title>
		<link>http://home.edstudio.net.ru/2010/02/creating-checkable-button-with-menu/</link>
		<comments>http://home.edstudio.net.ru/2010/02/creating-checkable-button-with-menu/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 07:30:19 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Основная]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=284</guid>
		<description><![CDATA[Итак, в&#160;этом посте мы&#160;рассмотрим создание чекабельной (checkable) кнопки с&#160;выпадающим меню (в&#160;котором будут не&#160;пункты меню, а&#160;виджеты) Пример будет совсем простым чтобы не&#160;морочить никому голову. Итак, приступим. Поскольку пример &#171;совсем простой&#187;, то&#160;создадим файл main.cpp и&#160;будем делать всё в&#160;нём. Начнём с&#160;создания кнопки QToolButton с&#160;возможностью отметить её: #include &#60;QApplication&#62; #include &#60;QtGui&#62; &#160; int main&#40;int argc, char **argv&#41; &#123; QApplication [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, в&nbsp;этом посте мы&nbsp;рассмотрим создание чекабельной (<em>checkable</em>) кнопки с&nbsp;выпадающим меню (в&nbsp;котором будут не&nbsp;пункты меню, а&nbsp;виджеты) <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-284"></span></p>
<p>Пример будет совсем простым чтобы не&nbsp;морочить никому голову. Итак, приступим.</p>
<p>Поскольку пример &laquo;совсем простой&raquo;, то&nbsp;создадим файл <em>main.cpp</em> и&nbsp;будем делать всё в&nbsp;нём. Начнём с&nbsp;создания кнопки <em>QToolButton</em> с&nbsp;возможностью отметить её:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #006E28;">#include &lt;QApplication&gt;</span>
<span style="color: #006E28;">#include &lt;QtGui&gt;</span>
&nbsp;
<span style="color: #0057AE;">int</span> main<span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">int</span> argc<span style="color: #006E28;">,</span> <span style="color: #0057AE;">char</span> <span style="color: #006E28;">**</span>argv<span style="color: #006E28;">&#41;</span>
<span style="color: #006E28;">&#123;</span>
    <span style="color: #22aadd;">QApplication</span> app<span style="color: #006E28;">&#40;</span>argc<span style="color: #006E28;">,</span> argv<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #22aadd;">QToolButton</span> btn<span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setText</span><span style="color: #006E28;">&#40;</span><span style="color: #BF0303;">&quot;Checkable&quot;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setCheckable</span><span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">true</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">show</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #000000; font-weight:bold;">return</span> app.<span style="color: #2B74C7;">exec</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></div></div>

<p>Теперь добавим сюда меню и&nbsp;режим отображения, чтобы кнопка выглядела так:</p>
<p><img src="http://home.edstudio.net.ru/wp-content/uploads/2010/02/checkable-button-with-menu.png" alt="" title="Чекабельная кнопка с меню" width="74" height="19" class="aligncenter size-full wp-image-302" /></p>

<div class="wp_syntax"><div class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #006E28;">#include &lt;QApplication&gt;</span>
<span style="color: #006E28;">#include &lt;QtGui&gt;</span>
&nbsp;
<span style="color: #0057AE;">int</span> main<span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">int</span> argc<span style="color: #006E28;">,</span> <span style="color: #0057AE;">char</span> <span style="color: #006E28;">**</span>argv<span style="color: #006E28;">&#41;</span>
<span style="color: #006E28;">&#123;</span>
    <span style="color: #22aadd;">QApplication</span> app<span style="color: #006E28;">&#40;</span>argc<span style="color: #006E28;">,</span> argv<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #22aadd;">QMenu</span> <span style="color: #006E28;">*</span>menu <span style="color: #006E28;">=</span> <span style="color: #000000; font-weight:bold;">new</span> QMenu<span style="color: #006E28;">;</span> <span style="color: #888888;">//Создаём меню</span>
&nbsp;
    <span style="color: #22aadd;">QToolButton</span> btn<span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setText</span><span style="color: #006E28;">&#40;</span><span style="color: #BF0303;">&quot;Checkable&quot;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setMenu</span><span style="color: #006E28;">&#40;</span>menu<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span> <span style="color: #888888;">//Добавляем меню</span>
        <span style="color: #888888;">//И выставляем режим его отображения</span>
    btn.<span style="color: #2B74C7;">setPopupMode</span><span style="color: #006E28;">&#40;</span><span style="color: #22aadd;">QToolButton</span><span style="color: #006E28;">::</span><span style="color: #2B74C7;">MenuButtonPopup</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setCheckable</span><span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">true</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">show</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #000000; font-weight:bold;">return</span> app.<span style="color: #2B74C7;">exec</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></div></div>

<p>Следующим шагом будет создание экземпляра <em>QWidgetAction</em>&nbsp;&mdash; класса, позволяющего вставить в&nbsp;меню любой виджет. Также будет создан сам виджет, который мы&nbsp;будем вставлять в&nbsp;меню (возьмём <nobr>какой-нибудь</nobr> <em>QLineEdit</em>). Ничего сложного нет. В&nbsp;конце просто добавляем его в&nbsp;меню как простой <em>QAction</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp-qt" style="font-family:monospace;"><span style="color: #006E28;">#include &lt;QApplication&gt;</span>
<span style="color: #006E28;">#include &lt;QtGui&gt;</span>
&nbsp;
<span style="color: #0057AE;">int</span> main<span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">int</span> argc<span style="color: #006E28;">,</span> <span style="color: #0057AE;">char</span> <span style="color: #006E28;">**</span>argv<span style="color: #006E28;">&#41;</span>
<span style="color: #006E28;">&#123;</span>
    <span style="color: #22aadd;">QApplication</span> app<span style="color: #006E28;">&#40;</span>argc<span style="color: #006E28;">,</span> argv<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #22aadd;">QWidgetAction</span> <span style="color: #006E28;">*</span>wa <span style="color: #006E28;">=</span> <span style="color: #000000; font-weight:bold;">new</span> <span style="color: #22aadd;">QWidgetAction</span><span style="color: #006E28;">&#40;</span><span style="color: #B08000;">0</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span> <span style="color: #888888;">//Экземпляр класса</span>
           <span style="color: #888888;">//И впихиваем в него QLineEdit</span>
        wa<span style="color: #006E28;">-&gt;</span><span style="color: #2B74C7;">setDefaultWidget</span><span style="color: #006E28;">&#40;</span><span style="color: #000000; font-weight:bold;">new</span> <span style="color: #22aadd;">QLineEdit</span><span style="color: #006E28;">&#40;</span><span style="color: #BF0303;">&quot;QLineEdit&quot;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #22aadd;">QMenu</span> <span style="color: #006E28;">*</span>menu <span style="color: #006E28;">=</span> <span style="color: #000000; font-weight:bold;">new</span> QMenu<span style="color: #006E28;">;</span>
        menu<span style="color: #006E28;">-&gt;</span><span style="color: #2B74C7;">addAction</span><span style="color: #006E28;">&#40;</span>wa<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span> <span style="color: #888888;">//Добавляем виджет</span>
&nbsp;
    <span style="color: #22aadd;">QToolButton</span> btn<span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setText</span><span style="color: #006E28;">&#40;</span><span style="color: #BF0303;">&quot;Checkable&quot;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setMenu</span><span style="color: #006E28;">&#40;</span>menu<span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setPopupMode</span><span style="color: #006E28;">&#40;</span><span style="color: #22aadd;">QToolButton</span><span style="color: #006E28;">::</span><span style="color: #2B74C7;">MenuButtonPopup</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">setCheckable</span><span style="color: #006E28;">&#40;</span><span style="color: #0057AE;">true</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
    btn.<span style="color: #2B74C7;">show</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
&nbsp;
    <span style="color: #000000; font-weight:bold;">return</span> app.<span style="color: #2B74C7;">exec</span><span style="color: #006E28;">&#40;</span><span style="color: #006E28;">&#41;</span><span style="color: #006E28;">;</span>
<span style="color: #006E28;">&#125;</span></pre></div></div>

<p>Вот такая получилась штучка:</p>
<p><img src="http://home.edstudio.net.ru/wp-content/uploads/2010/02/checkable-button-with-menu-active.png" alt="" title="Чекабельная кнопка с виджетом в меню" width="156" height="98" class="aligncenter size-full wp-image-303" /></p>
<p>Естественно, можно вставлять и&nbsp;более серьёзные объекты, никто не&nbsp;запрещает <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Собственно, всё. Всем удачи =)</p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2010/02/creating-checkable-button-with-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обидно</title>
		<link>http://home.edstudio.net.ru/2009/06/pity/</link>
		<comments>http://home.edstudio.net.ru/2009/06/pity/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 17:55:24 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Ни о чём]]></category>
		<category><![CDATA[Проблемы]]></category>
		<category><![CDATA[phonon]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[shamangrad]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[аяхз?]]></category>
		<category><![CDATA[ненавижу]]></category>
		<category><![CDATA[ОСи]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=230</guid>
		<description><![CDATA[Как&#160;же я&#160;радовался, когда смог наконец собрать Phonon. Думал, вот, напишу программку, аналогичную StreamFM, написанную моим знакомым. Нет, у&#160;меня не&#160;было желания соперничать с&#160;ним. Просто его программка написана на&#160;Python и&#160;её&#160;достаточно сложно &#171;завести&#187; под Windows. Поскольку у&#160;меня было огромное желание изучать Qt,&#160;решил что на&#160;нём и&#160;стоит писать. Как раз набраться опыта и&#160;так далее&#8230; В&#160;Qt&#160;есть медиа-фрэймворк&#160;&#8212; Phonon, являющийся частью проекта [...]]]></description>
			<content:encoded><![CDATA[<p>Как&nbsp;же я&nbsp;радовался, когда смог наконец собрать Phonon. Думал, вот, напишу программку, аналогичную <a href="http://shamangrad.net/project.php?act=view&#038;prj=streamfm" target="_blank" title="Приложение для скробблинга музыки, проигрываемой потоковыми радиостанциями.">StreamFM</a>, написанную моим знакомым. Нет, у&nbsp;меня не&nbsp;было желания соперничать с&nbsp;ним. Просто его программка написана на&nbsp;<a href="http://www.python.ru/" target="_blank" title="Язык программирования Python">Python</a> и&nbsp;её&nbsp;достаточно сложно &laquo;завести&raquo; под Windows.</p>
<p>Поскольку у&nbsp;меня было огромное желание изучать Qt,&nbsp;решил что на&nbsp;нём и&nbsp;стоит писать. Как раз набраться опыта и&nbsp;так далее&#8230; В&nbsp;Qt&nbsp;есть медиа-фрэймворк&nbsp;&#8212; <a href="http://phonon.kde.org/" target="_blank">Phonon</a>, являющийся частью проекта <a href="http://kde.org" target="_blank">KDE</a>. Как раз его и&nbsp;предполагалось использовать в&nbsp;качестве основы всего проекта.</p>
<p>Сам по&nbsp;себе, Phonon является чем-то типа &laquo;моста&raquo; между разработчиком и&nbsp;медиа-движком. Он&nbsp;просто предоставляет удобные методы по&nbsp;работе с&nbsp;ним. На&nbsp;каждой платформе он&nbsp;использует разные &laquo;движки&raquo;: на&nbsp;Linux&nbsp;&#8212; GStreamer, на&nbsp;Windows&nbsp;&#8212; DirectX и&nbsp;DirectShow, на&nbsp;Mac OS&nbsp;X&nbsp;&#8212; QuickTime 7.</p>
<p>Вот как раз именно на&nbsp;этом моменте случилось самое плохое: Phonon не&nbsp;может нормально работать под Windows, в&nbsp;то&nbsp;время как на&nbsp;Linux (при использовании GStreamer) всё работает замечательно.</p>
<p>Короче, мою &laquo;хотелку&raquo; обломали на&nbsp;корню <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Сказать что я&nbsp;расстроен&nbsp;&#8212; не&nbsp;сказать ничего.</p>
<p><strong>UPD:</strong> Ах&nbsp;да,&nbsp;совсем забыл сказать, сейчас проект продолжает развиваться под Linux. Называется программка Qawaii и&nbsp;найти её&nbsp;можно <a href="http://shamangrad.net/Qawaii.prj" target="_blank" title="Qt-based streaming radio player">здесь</a>. О&nbsp;совместимости с&nbsp;Mac OS&nbsp;X:&nbsp;неизвестно.</p>
<p>Также проект Qawaii мне более не&nbsp;принадлежит. Главным и,&nbsp;скорее всего единственным (к&nbsp;сожалению), разработчиком теперь является <a href="http://the1st.net.ru" target="_blank">WST</a>.</p>
<p><strong>UPD2:</strong> Гавно.</p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2009/06/pity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Компилирование библиотеки Qt под ОС Windows с поддержкой Phonon</title>
		<link>http://home.edstudio.net.ru/2009/06/compiling-qt-library-under-windows-os-with-support-for-phonon/</link>
		<comments>http://home.edstudio.net.ru/2009/06/compiling-qt-library-under-windows-os-with-support-for-phonon/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 11:32:37 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Решения]]></category>
		<category><![CDATA[phonon]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[ОСи]]></category>
		<category><![CDATA[разработка]]></category>
		<category><![CDATA[халява]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=194</guid>
		<description><![CDATA[В этой статье я&#160;расскажу как скомпилировать Qt&#160;с&#160;поддержкой Phonon. Итак, давайте сначала разберёмся как всё это будет выглядеть. Библиотеки QtWebKit и&#160;Phonon не&#160;являются собственностью Qt.&#160;Они были включены в&#160;него под &#171;свободной лицензией&#187;. В&#160;связи с&#160;этим компилирование обоих этих библиотек возможно только в&#160;shared-версии. Из&#160;этого можно сделать вывод, что про необходимости использования любой из&#160;этих библиотек статичную сборку делать бесполезно. Также надо [...]]]></description>
			<content:encoded><![CDATA[<p>В этой статье я&nbsp;расскажу как скомпилировать <a href="http://qtsoftware.com" target="_blank" title="Qt — A cross-platform application and UI framework">Qt</a>&nbsp;с&nbsp;поддержкой Phonon.</p>
<p><span id="more-194"></span></p>
<p>Итак, давайте сначала разберёмся как всё это будет выглядеть. Библиотеки QtWebKit и&nbsp;Phonon не&nbsp;являются собственностью Qt.&nbsp;Они были включены в&nbsp;него под &laquo;свободной лицензией&raquo;. В&nbsp;связи с&nbsp;этим компилирование обоих этих библиотек возможно только в&nbsp;shared-версии. Из&nbsp;этого можно сделать вывод, что про необходимости использования любой из&nbsp;этих библиотек статичную сборку делать бесполезно.</p>
<p>Также надо заметить, что Phonon использует DirectShow, который поддерживает только свой, &laquo;родной&raquo; компилятор&nbsp;&#8212; nmake (поставляется с&nbsp;некоторыми SDK фирмы Microsoft и,&nbsp;естественно, с&nbsp;Microsoft Visual C++).</p>
<p>Итак, решено! Мы&nbsp;будем использовать nmake и&nbsp;делать shared-сборку <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><a name="orientation"></a><br />
<h2>Ориентируемся на&#8230;</h2>
<p>Скажем просто: на&nbsp;какие версии ОС&nbsp;мы&nbsp;собираемся ориентировать нашу программу (на&nbsp;release-стадии, конечно).</p>
<p>Для Windows Vista и&nbsp;ниже (XP&nbsp;например) отлично подойдёт MSVC2005 и&nbsp;Platform SDK для 2003-го сервера. Для самых новых (Vista, Se7en) предпочтительнее брать более новые продукты: MSVC2008 и&nbsp;Platform SDK для 2008-го сервера.</p>
<p>Исходя из&nbsp;этой информации необходимо принять решение о&nbsp;загрузке того или иного ПО&nbsp;из&nbsp;списка ниже.</p>
<p>Также настоятельно рекомендую прочитать &laquo;<a href="#depend">О&nbsp;зависимостях</a>&raquo;.</p>
<h2>А&nbsp;что нам, собственно, нужно?..</h2>
<p>Сначала скачаем всё, чтобы потом не&nbsp;отвлекаться во&nbsp;время установки на&nbsp;ожидание загрузки очередного очень нужного компонента.</p>
<ol>
<li>Для начала&nbsp;&#8212; сам Qt.&nbsp;Берём его <a href="http://get.qtsoftware.com/qt/source/" target="_blank" title="Хранилище Qt SoftWare, в котором можно найти много разных версий под разные ОС">здесь</a>, на&nbsp;официальном сайте. <span style="font-size: 75%; color: gray;">Я не&nbsp;даю прямую ссылку на&nbsp;файл, потому что может произойти так, что из-за меня кто-нибудь скачает древнюю версию, что не&nbsp;красиво. На&nbsp;момент написания статьи была использована версия 4.5.2. Выбираем zip-архив с&nbsp;именем <strong>qt-win-opensource-src-%версия%.zip</strong>, где %версия%&nbsp;&#8212; смотрим самую новую.</span></li>
<li>Ещё Microsoft Visual C++ <span style="font-size: 75%; color: gray;"><strong>Express Edition</strong>, чтоб было всё бесплатно %)</span>. Версию 2005&nbsp;года можно найти <a href="http://www.google.ru/search?hl=ru&#038;newwindow=1&#038;q=visual+c%2B%2B+2005+express+edition+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C" target="_blank" title="Ищем MSVC2005 Express Edition на просторах сети Интернет">поиском</a>, а&nbsp;вот версия 2008&nbsp;года вполне доступна с&nbsp;<a href="http://www.microsoft.com/express/download/" targte="_blank" title="Microsoft Visual Studio 2008 Express Edition Downloads">сайта самой компании</a>. <span style="font-size: 75%; color: gray;">Самое интересное заключается в&nbsp;том, что абсолютно непонятно какая между ними разница, кроме, конечно, постепенно деградирующего интерфейса&#8230; Я&nbsp;использую MSVC версии 2005&nbsp;года и&nbsp;вполне ей&nbsp;доволен. Что касается более новых версий Windows (Windows Vista и&nbsp;Windows Se7en), то&nbsp;не&nbsp;могу однозначно сказать на&nbsp;сколько программа скомпилированная под MSVC2005&nbsp;будет там работоспособна. На&nbsp;Vista точно будет работать, а&nbsp;вот про Se7en: чего не&nbsp;знаю&nbsp;&#8212; того не&nbsp;знаю.</span></li>
<li>Также нам понадобиться Microsoft Platform SDK for Server. Здесь тоже много версий: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E15438AC-60BE-41BD-AA14-7F1E0F19CA0D&#038;displaylang=en" target="_blank" title="Windows Server 2003 R2 Platform SDK ISO Download">Windows Server <strong>2003</strong>&nbsp;R2&nbsp;Platform SDK ISO Download</a> и&nbsp;<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&#038;displaylang=en" target="_blank" title="Windows SDK for Windows Server 2008 and .NET Framework 3.5">Windows SDK for Windows Server <strong>2008</strong>&nbsp;and .NET Framework 3.5</a>. <span style="font-size: 75%; color: gray;">Здесь история аналогичная Microsoft Visual C++. У&nbsp;меня версия опять древняя&nbsp;&#8212; 2003&nbsp;года.</span></li>
</ol>
<p>На этом минимальный набор всякого снаряжения подошёл к&nbsp;концу. Но,&nbsp;лично я&nbsp;хочу рассмотреть компиляцию с&nbsp;поддержкой шифрования (OpenSSL) и&nbsp;хочу его собрать сам. Здесь происходит самое интересное: сборка OpenSSL под Windows, которую можно найти по&nbsp;запросу <a href="http://www.google.ru/search?hl=ru&#038;newwindow=1&#038;q=openssl+windows" target="_blank" title="Результаты поиска opensll windows в google">openssl windows</a>, сделана как раз с&nbsp;зависимостью от&nbsp;этого пакета. Чтож, пересоберём как нам надо! <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Итак, дополнительный список вооружения:</p>
<ol>
<li>Сами исходные коды OpenSSL берём <a href="http://www.openssl.org/source/" target="_blank" title="Cryptography and SSL/TLS Toolkit">здесь</a>. <span style="font-size: 75%; color: gray;">Как всегда советую брать новейшую версию. На&nbsp;момент написания последней стабильной версией была 0.9.8k.</span></li>
<li>Microsoft Macro Assembler (MASM), доступный на&nbsp;<a href="http://www.microsoft.com/downloads/details.aspx?familyid=7A1C9DA0-0510-44A2-B042-7EF370530C64&#038;displaylang=en" target="_blank" title="Microsoft Macro Assembler 8.0 (MASM) Package (x86)">официальном сайте (8-ая версия)</a>. <span style="font-size: 75%; color: gray;">Этот пакет необходим для сборки OpenSSL. Здесь также необходимо выбирать версию, соответствующую вашей Visual C++. Но&nbsp;вот 9-ой версии (для MSVC2008) что-то я&nbsp;у&nbsp;них не&nbsp;нашёл.</span></li>
<li>ActivePerl берём <a href="http://www.activestate.com/activeperl/" target="_blank" title="ActivePerl - Complete and Ready-to-Install">тут</a>. <span style="font-size: 75%; color: gray;">Он также необходим для компилирования OpenSSL.</span></li>
</ol>
<p>Вроде, ничего не&nbsp;забыли <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>О&nbsp;том, куда устанавливать</h2>
<p>Иногда случаются такие ситуации, когда надо что-то найти, а&nbsp;никто не&nbsp;знает где это лежит. Для этого я&nbsp;считаю очень удобным, чтобы всё ПО&nbsp;какой-то определённой тематики (особенно, если его так много как здесь) валялось в&nbsp;одной папке. Для себя я&nbsp;определился, что этой самой папочкой станет <i>C:\Development</i> для всяких SDK и&nbsp;папочка <i>C:\Qt\%версия%</i> для всяких Qt&nbsp;(у&nbsp;меня это выглядит так: <i>C:\Qt\4.5.2</i>).</p>
<p>Удобно, не&nbsp;правда&nbsp;ли? <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Установка Windows Server 2003&nbsp;R2&nbsp;Platform SDK</h2>
<p>В связи с&nbsp;&laquo;О&nbsp;том, куда устанавливать&raquo; устанавливаем в&nbsp;<i>C:\Development\Microsoft Platform SDK for Windows Server 2003&nbsp;R2</i>.</p>
<p>Поскольку мало кто полезет читать документацию к&nbsp;этому SDK или&nbsp;же кто захочет поглазеть на&nbsp;примеры исходных кодов, то&nbsp;они нам не&nbsp;нужны и&nbsp;мы&nbsp;их&nbsp;выкидываем (также выкидываем всевозможные тулзы и&nbsp;снаряжения для ненужных процессоров).</p>
<div id="attachment_214" class="wp-caption aligncenter" style="width: 616px"><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/platform-sdk-0.png" alt="Установка Platform SDK" title="Установка Platform SDK" width="606" height="465" class="size-full wp-image-214" /><p class="wp-caption-text">Установка Platform SDK</p></div>
<p>Всё, устанавливаем.</p>
<h2>Установка ActivePerl</h2>
<p>Здесь не&nbsp;важно куда и&nbsp;как вы&nbsp;его установите. Главное галочку напротив вопроса о&nbsp;добавлении в&nbsp;%PATH% не&nbsp;убирайте <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Установка DirectX SDK</h2>
<p>Здесь всё аналогично установке Platform SDK. Адрес установки: <i>C:\Development\Microsoft DirectX SDK (March 2009)</i>.</p>
<div id="attachment_211" class="wp-caption aligncenter" style="width: 513px"><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/directx-0.png" alt="Установка DirectX SDK" title="Установка DirectX SDK" width="503" height="393" class="size-full wp-image-211" /><p class="wp-caption-text">Установка DirectX SDK</p></div>
<h2>Установка Visual C++ 2005&nbsp;Express Edition</h2>
<p>Здесь следует помнить, что Express Edition&nbsp;&#8212; единственный бесплатный вариант. Чтобы избежать всевозможных проблем следует устанавливать именно её.</p>
<p>Из этого пакета нам однозначно не&nbsp;нужна справочная библиотека MSDN и&nbsp;SQL Server. Выкидываем их.</p>
<p>Компонент Graphical IDE мы&nbsp;оставляем. Нет, ничего писать в&nbsp;нём мы&nbsp;не&nbsp;собираемся, просто есть маленькая программка (<strong>mt.exe</strong> кажется), без которой компилятор будет плакать как маленький.</p>
<div id="attachment_213" class="wp-caption aligncenter" style="width: 516px"><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/msvc2005-0.png" alt="Установка Visual C++ 2005 Express Edition" title="Установка Visual C++ 2005 Express Edition" width="506" height="458" class="size-full wp-image-213" /><p class="wp-caption-text">Установка Visual C++ 2005 Express Edition</p></div>
<p>Будут установлены следующие компоненты: MSVC2005 и&nbsp;.Net Framework v2.0&nbsp;(он,&nbsp;кстати, тоже крайне необходим). Адрес установки, для удобства, я&nbsp;назначил <i>C:\Development\VC</i>.</p>
<p>Обновлять всё это дело до&nbsp;SP1&nbsp;не&nbsp;рекомендую. Я&nbsp;долго шарился по&nbsp;интернету в&nbsp;поисках решений своих ошибок при первых попытках скомпилировать Phonon и&nbsp;прочитал, что с&nbsp;SP1&nbsp;может возникнуть конфликт при сборке Qt.&nbsp;Хотя, это было уже достаточно давно, может уже исправили.</p>
<h2>Установка Microsoft Macro Assembler</h2>
<p>Здесь вообще не&nbsp;предлагается никакая свобода выбора. Просят только принять лицензию. Для любопытных умов: он&nbsp;установился в&nbsp;папку к&nbsp;VC&nbsp;и&nbsp;называется <strong>ml.exe</strong>.</p>
<h2>Компилирование и&nbsp;установка OpenSSL</h2>
<p>Вот, мы&nbsp;уже близки к&nbsp;завершению подготовки перед компиляцией Qt&nbsp;:)</p>
<p>Сначала распакуем архив с&nbsp;OpenSSL куда-нибудь, например в&nbsp;<i>C:\openssl-0.9.8k</i>, запустим скрипт, устанавливающий окружение MSVC (<i>Пуск -> Все программы -> Microsoft C++ 2005&nbsp;Express Edition -> Visual Studio Tools -> Visual Studio 2005&nbsp;Command Prompt</i> или аналогичный, в&nbsp;зависимости от&nbsp;версии) и&nbsp;перейдём с&nbsp;помощью команды <strong><u>cd</u>&nbsp;C:\openssl-0.9.8k</strong> в&nbsp;каталог с&nbsp;исходными кодами OpenSSL.</p>
<p>Вот сейчас нам как раз понадобится Perl, MASM и&nbsp;nmake все сразу. Начнём.</p>
<p>Конфигурируем OpenSSL, выполнив следующую команду в&nbsp;командной строке:</p>
<p><code><br />
<blockquote>perl Configure VC-WIN32 --prefix=C:/Development/OpenSSL</p></blockquote>
<p></code></p>
<p>Естественно, значение параметра <strong>-prefix=</strong> в&nbsp;соответствии нуждам. Также стоит обратить внимание на&nbsp;то,&nbsp;что используется слеш (а&nbsp;не&nbsp;обратный слеш как во&nbsp;всех других местах). Невыполнение этого правила приведёт к&nbsp;краху сборки.</p>
<p>Теперь выполняем команду</p>
<p><code><br />
<blockquote>ms\do_masm</p></blockquote>
<p></code></p>
<p>и</p>
<p><code><br />
<blockquote>nmake -f ms\ntdll.mak</p></blockquote>
<p></code></p>
<p>Началась сборка библиотек OpenSSL, по&nbsp;окончанию которых можно проверить их&nbsp;работоспособность выполнив команду</p>
<p><code><br />
<blockquote>nmake -f ms\ntdll.mak test</p></blockquote>
<p></code></p>
<p>По окончании проверки в&nbsp;консоль будет выведена информации об&nbsp;успешном (или не&nbsp;успешном) завершении проверки работоспособности библиотек.</p>
<p>Всё, устанавливаем (фактически копируем) необходимые файлы (в&nbsp;папку указанную при конфигурировании в&nbsp;<strong>-prefix=</strong>), выполнив в&nbsp;консоли команду:</p>
<p><code><br />
<blockquote>nmake -f ms\ntdll.mak install</p></blockquote>
<p></code></p>
<p>Всё. Теперь нам больше не&nbsp;понадобится ни&nbsp;MASM, ни&nbsp;ActivePerl, ни&nbsp;даже папка в&nbsp;которой мы&nbsp;сейчас находимся вместе с&nbsp;архивом с&nbsp;исходниками OpenSSL.</p>
<h2>Создание файла настроек окружения</h2>
<p>Делается это просто: методом создания файла командной строки.</p>
<p>Создадим файл <i>C:\Development\SetEnv.cmd</i>.</p>
<p>Теперь напишем скрипт установки всех частей окружения вручную, с&nbsp;нуля. Мой вариант:</p>
<blockquote><p><code>@ECHO OFF</p>
<p>@set DEV=C:\Development<br />
@set PATH=%SystemRoot%;%SystemRoot%\system32<br />
@set QTDIR=C:\Qt\4.5.2</p>
<p>@echo Setting OpenSSL Env.<br />
@set PATH=%DEV%\OpenSSL\bin;%PATH%<br />
@set LIB=%DEV%\OpenSSL\lib<br />
@set INCLUDE=%DEV%\OpenSSL\include</p>
<p>@echo Setting DirectX Env.<br />
@set LIB=%DEV%\Microsoft DirectX SDK (March 2009)\Lib\x86;%LIB%<br />
@set INCLUDE=%DEV%\Microsoft DirectX SDK (March 2009)\Include;%INCLUDE%</p>
<p>@echo Setting Windows SDK Env.<br />
@set LIB=%DEV%\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%<br />
@set INCLUDE=%DEV%\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%<br />
@set CPU=i386<br />
@set NODEBUG=1</p>
<p>@echo Setting MSVC2005 Env.<br />
@set PATH=%DEV%\VC\VC\bin;%DEV%\VC\Common7\Tools;%DEV%\VC\Common7\IDE;%DEV%\VC\VC\VCPackages;%PATH%<br />
@set INCLUDE=%DEV%\VC\VC\INCLUDE;%INCLUDE%<br />
@set LIB=%DEV%\VC\VC\LIB;%LIB%</p>
<p>@echo Setting Framework Env.<br />
@set FrameworkVersion=v2.0.50727<br />
@set FrameworkDir=%SystemRoot%\Microsoft.NET\Framework<br />
@set PATH=%DEV%\VC\SDK\v2.0\Bin;%PATH%<br />
@set LIB=%DEV%\VC\SDK\v2.0\Lib;%LIB%<br />
@set LIBPATH=%FrameworkDir%\%FrameworkVersion%<br />
@set PATH=%LIBPATH%;%PATH%</p>
<p>@echo Setting Qt Env.<br />
@set PATH=%QTDIR%\bin;%PATH%</p>
<p>@title Qt Framework 4.5.2 Development Kit.</p>
<p>cd %QTDIR%</code></p></blockquote>
<p>Здесь применены временный переменные, к&nbsp;примеру <strong>%DEV%</strong> чтобы сократить остальную писанину.</p>
<p>Объяснять что здесь что я&nbsp;не&nbsp;буду. Хочу лишь обратить внимание на&nbsp;установку снаряжения Windows SDK и&nbsp;Framework.</p>
<p>В Windows SDK есть переменные <strong>CPU</strong> и&nbsp;<strong>NODEBUG</strong>, отвечающие за&nbsp;Retail и&nbsp;Debug сборку, а&nbsp;также за&nbsp;архитектуру.</p>
<p>В Framework необходимо проверить правильность всех этих переменных в&nbsp;соответствии окружению. У&nbsp;меня, при использовании MSVC2005&nbsp;они такие, как написано. Если при компиляции возникнет ошибка, что не&nbsp;найден файл с&nbsp;именем <strong>mscoree</strong>, то&nbsp;ошибку следует искать именно здесь.</p>
<p>Чтобы легко использовать это окружение, можно создать на&nbsp;него ярлык. Здесь стоит заметить, что ярлык должен быть &laquo;особенным&raquo;, так как при простом запуске этого файла он&nbsp;выполнится, после чего окно просто закроется. Чтобы этого не&nbsp;случилось делаем так: создаём ярлык в&nbsp;удобном нам месте (правой кнопкой мышки -> Создать -> Ярлык&#8230;), выбираем путь к&nbsp;файлу и&nbsp;приписываем к&nbsp;нему слево <strong>%comspec% /k</strong>. Получится примерно так: <strong>%comspec% /k C:\Development\SetEnv.Cmd</strong>.</p>
<div id="attachment_215" class="wp-caption aligncenter" style="width: 457px"><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/shortcut-0.png" alt="Создания ярлыка" title="Создания ярлыка" width="447" height="334" class="size-full wp-image-215" /><p class="wp-caption-text">Создания ярлыка</p></div>
<p>Последний этап подготовки перед компилированием Qt&nbsp;завершён.</p>
<h2>Сборка Qt</h2>
<p>Вот и&nbsp;всё, всё снаряжение готово к&nbsp;бою <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Итак, первым делом следует распаковать Qt&nbsp;из&nbsp;скачанного архива в&nbsp;необходимую папку (<i>C:\Qt\4.5.2</i>&nbsp;в&nbsp;моём случае) и&nbsp;произвести предварительные настройки для компилятора.</p>
<p>Чтобы произвести настройку компилятора, надо отредактировать файл конфигурации <strong>qmake.txt</strong>, расположенный в&nbsp;папке <i>mkspecs\%компилятор%</i>, где %компилятор%&nbsp;&#8212; версия нашего компилятора (для MSVC2005&nbsp;оно равно <strong>win32-msvc2005</strong>, а&nbsp;для MSVC2008&nbsp;&#8212; <strong>win32-msvc2008</strong>). Открываем этот документ в&nbsp;текстовом редакторе и&nbsp;ищем следующие строчки (они могут немного отличаться):</p>
<p><code><br />
<blockquote>QMAKE_CFLAGS_RELEASE    = -O2 -MD<br />
QMAKE_CFLAGS_DEBUG      = -Zi -MDd</p></blockquote>
<p></code></p>
<p>Если обладаем многоядерным процессором, то можно компилировать в несколько потоков. Для этого используется флаг <strong>-MPi</strong>, где <strong>i</strong> &#8211; количество процессоров (для 2-х-ядерного процессора это будет выглядеть так: <strong>-MP2</strong>). Этот флаг можно добавить и в release, и в debug флаги.</p>
<p><span style="font-size: 75%; color: gray;">Примечание: если файл конфигурации содержит флаг <strong>-GL</strong> (оптимизация всей программы), то&nbsp;<strong>удалите</strong> его. Этот флаг потенциально может создать конфликт при компиляции <strong>QtWebKit</strong>.</span></p>
<p>После всех наших преобразований эти строки будут выглядеть примерно так:</p>
<p><code><br />
<blockquote>QMAKE_CFLAGS_RELEASE    = -O2 -MD -MP2<br />
QMAKE_CFLAGS_DEBUG      = -Zi -MDd -MP2</p></blockquote>
<p></code></p>
<p>Некоторые из&nbsp;вас могут спросить, мол, а&nbsp;не&nbsp;лучше&nbsp;ли заменить флаг <strong>-O2</strong>&nbsp;на,&nbsp;к&nbsp;примеру, <strong>-Os</strong> (по&nbsp;аналогии с&nbsp;компилятором <i>g++</i>)? Отвечу: нет, не&nbsp;лучше. Для компилятора <i>nmake</i> этот флаг эквивалентен флагу <strong>-O1</strong>. Подробнее об&nbsp;этом можно почитать <a href="http://msdn.microsoft.com/ru-ru/library/8f8h5cxt.aspx" target="_blank" title="/O1, /O2 (минимизировать размер, максимизировать скорость)">тут, на&nbsp;сайте MSDN</a>.</p>
<p>Распинаться на&nbsp;тему того, какие флаги использовать при конфигурировании Qt&nbsp;я&nbsp;не&nbsp;буду. Просто скажу, что бывают случаи, когда конфигуратор по&nbsp;каким-то причинам не&nbsp;видит возможности использовать тот или иной флаг. Поэтому следует указать все. Здесь приведу свой набор флагов:</p>
<p><code><br />
<blockquote>configure -debug-and-release -shared -exceptions -accessibility -stl -plugin-sql-sqlite -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-dsp -no-vcproj -mmx -3dnow -sse -sse2 -direct3d -openssl -no-dbus -phonon -phonon-backend -webkit -scripttools -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde</p></blockquote>
<p></code></p>
<p>Итак, можно начинать конфигурирование и&nbsp;компилирование <strong>qmake.exe</strong>. Для этого запустим наш скрипт <strong>SetEnv.cmd</strong> через ярлык и&nbsp;вставим туда команду, написанную выше.</p>
<div id="attachment_210" class="wp-caption aligncenter" style="width: 679px"><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/configure-0.png" alt="Выполнение конфигурирования" title="Выполнение конфигурирования" width="669" height="338" class="size-full wp-image-210" /><p class="wp-caption-text">Выполнение конфигурирования</p></div>
<p>После компилирования <strong>qmake.exe</strong> с&nbsp;его помощью будут созданы make-файлы для всех проектов (начиная от&nbsp;самой библиотеки Qt&nbsp;и&nbsp;заканчивая простейшими примерами). Здесь существует вероятность, что нет необходимости компилировать вообще всё подряд. К&nbsp;примеру нужна просто release-версия библиотеки для компилирования release-версий каких-либо программ. То&nbsp;есть не&nbsp;для разработки.</p>
<p>Если есть какая-то необходимость компилировать не&nbsp;весь Qt,&nbsp;а&nbsp;по&nbsp;частям, то&nbsp;используются специальные &laquo;флаги&raquo;, определённые в&nbsp;основном файле проекта Qt.&nbsp;Вот 2&nbsp;основных из&nbsp;них:</p>
<ol>
<li><strong>nmake sub-src</strong>&nbsp;&#8212; для компилирования только библиотек;</li>
<li><strong>nmake sub-tools</strong>&nbsp;&#8212; для компилирования всевозможных утилит (Designer, Linguist, Assistant, etc.).</li>
</ol>
<p>По завершению конфигурирования, создания <strong>qmake.exe</strong> и&nbsp;make-файлов для проекта, Qt&nbsp;скажет, что &laquo;Qt&nbsp;is&nbsp;now configured for building. Just run nmake. To&nbsp;reconfigure, run nmake confclean and configure&raquo;. Можно приступать к&nbsp;сборке <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Для того, чтобы начать компилирование просто введите <strong>nmake</strong> (или <strong>nmake sub-src</strong> и&nbsp;потом, если надо, <strong>nmake sub-tools</strong>) в&nbsp;зависимости от&nbsp;необходимого результата.</p>
<p>Если интересно, то&nbsp;я&nbsp;выполнил поочерёдно команды <strong>nmake sub-src</strong> и&nbsp;<strong>nmake sub-tools</strong> чтобы получить библиотеку с&nbsp;тулзами, но&nbsp;без ненужных примеров.</p>
<p><span style="font-size: 75%; color: gray;">&#8230;Прошло n-ое время, затраченное на&nbsp;компилирование нужных компонентов&#8230;</span></p>
<p>По завершению операций консоль не&nbsp;закрываем.</p>
<h2>Проверка работоспособности библиотеки</h2>
<p>Здесь всё просто. Раз мы&nbsp;собирали Qt&nbsp;в&nbsp;основном из-за модуля Phonon, то&nbsp;его и&nbsp;будем проверять.</p>
<p>Для этого выполним следующую команду, по&nbsp;завершении которой скомпилируется и&nbsp;запустится демо-приложение, использующее Phonon:</p>
<p><code><br />
<blockquote>cd demos/mediaplayer &#038;&#038; qmake &#038;&#038; nmake release &#038;&#038; cd release &#038;&#038; mediaplayer</p></blockquote>
<p></code></p>
<p>Через несколько секунд после завершения выполнения этого набора команд запуститься приложение. Откроем в&nbsp;нём какой-нибудь аудио файл, например: любимую песню <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  На&nbsp;этом моменте все поймут, работает Phonon или нет.</p>
<p><div id="attachment_212" class="wp-caption aligncenter" style="width: 334px"><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/mediaplayer-0.png" alt="Демо-приложение: Media Player" title="Демо-приложение: Media Player" width="324" height="181" class="size-full wp-image-212" /><p class="wp-caption-text">Демо-приложение: Media Player</p></div><br />
<a name="notes"></a><br />
<h2>Оговорки</h2>
<ul>
<li>В &laquo;Проверке работоспособности библиотеки&raquo; запуск приложения выполнен через консоль. Если попытаться запустить скомпилированную программу через проводник (при условии, что она находится <strong>не</strong>&nbsp;в&nbsp;директории <i>bin</i> Qt), то&nbsp;ничего не&nbsp;получится. Чтобы это исправить, необходимо перенести все переменные окружения из&nbsp;<strong>SetEnv.cmd</strong> в&nbsp;глобальное окружение ОС&nbsp;(Пуск -> Панель управления -> Система -> вкладка &laquo;Дополнительно&raquo; -> Переменные среды).</li>
<li>В случае возникновения ошибки при проверки работоспособности Phonon не&nbsp;следует огорчатся. Иногда так случается, что по&nbsp;каким-то причинам воспроизведение невозможно. Не&nbsp;знаю почему. просто попробуйте воспроизвести другой файл.</li>
</ul>
<p><a name="depend"></a><br />
<h2>О&nbsp;зависимостях</h2>
<p>Чтобы убрать зависимости от&nbsp;redistributable-пакетов необходимо заменить флаг <strong>-MD</strong> (<strong>-MDd</strong>) на&nbsp;<strong>-MT</strong> (<strong>-MTd</strong>).</p>
<p>Тут некоторые задумались на&nbsp;тему того, почему этот вопрос был вынесен из&nbsp;самой &laquo;инструкции&raquo; и&nbsp;являет собой нечто, похожее на&nbsp;дополнение. А&nbsp;кто-то, пропустив ссылку сюда сильно расстроен. Чтож, объясняю.</p>
<p>Использование флага <strong>-MT</strong> подразумевает собой &laquo;вшивание&raquo; кода runtime-библиотеки в&nbsp;конечный продукт (и&nbsp;в&nbsp;библиотеки, и&nbsp;в&nbsp;программы). Но&nbsp;при этом возникает обидная неожиданность: очень часто программы не&nbsp;работают. У&nbsp;меня лично хронически не&nbsp;запускался QtDesigner и&nbsp;lrelease (может что-нибудь ещё, а&nbsp;я&nbsp;просто не&nbsp;в&nbsp;курсе).</p>
<p>Именно по-этому я&nbsp;вынес этот вопрос сюда. В&nbsp;принципе, никто не&nbsp;мешает попытаться сделать <strong>-MT</strong> на&nbsp;более свежих версиях. У&nbsp;меня вот не&nbsp;срослось. Кстати, если надумали делать, то&nbsp;в&nbsp;OpenSSL тоже придётся внести небольшие изменения: в&nbsp;файле <em>ms\ntdll.mak</em> исправить <strong>/MD</strong> на&nbsp;<strong>/MT</strong>. Делать это необходимо после выполнения команды</p>
<blockquote><p><code>ms\do_masm</code></p></blockquote>
<p>О зависимостях готовых приложений можно почитать <a href="http://doc.qtsoftware.com/4.5/deployment-windows.html" target="_blank" title="Deploying an Application on Windows">тут [на англ.]</a>.</p>
<p><a href="#orientation">Вернуться вверх, к&nbsp;&laquo;Ориентируемся на&#8230;&raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2009/06/compiling-qt-library-under-windows-os-with-support-for-phonon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Халява от Canonical</title>
		<link>http://home.edstudio.net.ru/2009/06/free-from-canonical/</link>
		<comments>http://home.edstudio.net.ru/2009/06/free-from-canonical/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 12:23:47 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Решения]]></category>
		<category><![CDATA[*ubuntu]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ОСи]]></category>
		<category><![CDATA[халява]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=178</guid>
		<description><![CDATA[Вот, ко&#160;мне пришёл 2-ой пакет с&#160;Свободным Программным Обеспечением от&#160;Canonical. В первом пакете я&#160;заказал kUbuntu&#160;&#8212; дистрибутив linux с&#160;оконным менеджером KDE4. Вторым пакетом мою коллекцию пополнили дистрибутивы Ubuntu&#160;&#8212; дистрибутив linux с&#160;оконным менеджером GNOME и&#160;Ubuntu Server&#160;&#8212; дистрибутив linux для серверных станций. Впринципе, можно не&#160;говорить, что каждая из&#160;этих операционных систем абсолютно бесплатная, и&#160;что Вы&#160;можете её&#160;скачать на&#160;сайте или закачать по&#160;почте [...]]]></description>
			<content:encoded><![CDATA[<p>Вот, ко&nbsp;мне пришёл 2-ой пакет с&nbsp;Свободным Программным Обеспечением от&nbsp;<a href="http://www.canonical.com/" title="Canonical Ltd." target="_blank">Canonical</a>.</p>
<p>В первом пакете я&nbsp;заказал <a href="http://www.kubuntu.org/" title="kUbuntu" tearget="_blank">kUbuntu</a>&nbsp;&#8212; дистрибутив linux с&nbsp;оконным менеджером <a href="http://www.kde.org/" title="K Desktop Envirement" target="_blank">KDE4</a>.</p>
<p>Вторым пакетом мою коллекцию пополнили дистрибутивы <a href="http://www.ubuntu.com/products/WhatIsUbuntu/desktopedition" title="Ubuntu Desktop Edition" target="_blank">Ubuntu</a>&nbsp;&#8212; дистрибутив linux с&nbsp;оконным менеджером <a href="http://www.gnome.org/" title="GNOME: The Free Software Desktop Project" target="_blank">GNOME</a> и&nbsp;<a href="http://www.ubuntu.com/products/WhatIsUbuntu/serveredition" title="Ubuntu Server Edition" target="_blank">Ubuntu Server</a>&nbsp;&#8212; дистрибутив linux для серверных станций.</p>
<p><span id="more-178"></span></p>
<p>Впринципе, можно не&nbsp;говорить, что каждая из&nbsp;этих операционных систем абсолютно бесплатная, и&nbsp;что Вы&nbsp;можете её&nbsp;скачать на&nbsp;сайте или закачать по&nbsp;почте с&nbsp;помощью бесплатной услуги ShipIt (ссылки на&nbsp;страницы проекта я&nbsp;давать не&nbsp;буду, Вы&nbsp;сможете и&nbsp;так легко найти их&nbsp;на&nbsp;сайте интересующего Вас дистрибутива).</p>
<p>Сами диски:</p>

<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/ubuntu-cover/' title='Ubuntu Desktop Edition: Обложка'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/ubuntu-cover.jpg" class="attachment-thumbnail" alt="Ubuntu Desktop Edition: Обложка" title="Ubuntu Desktop Edition: Обложка" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/ubuntu-inside/' title='Ubuntu Desktop Edition: Разворот'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/ubuntu-inside.jpg" class="attachment-thumbnail" alt="Ubuntu Desktop Edition: Разворот" title="Ubuntu Desktop Edition: Разворот" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/ubuntu-cd/' title='Ubuntu Desktop Edition: Диск'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/ubuntu-cd.jpg" class="attachment-thumbnail" alt="Ubuntu Desktop Edition: Диск" title="Ubuntu Desktop Edition: Диск" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/ubuntu-server-cover/' title='Ubuntu Server Edition: Обложка'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/ubuntu-server-cover.jpg" class="attachment-thumbnail" alt="Ubuntu Server Edition: Обложка" title="Ubuntu Server Edition: Обложка" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/ubuntu-server-inside/' title='Ubuntu Server Edition: Разворот'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/ubuntu-server-inside.jpg" class="attachment-thumbnail" alt="Ubuntu Server Edition: Разворот" title="Ubuntu Server Edition: Разворот" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/ubuntu-server-cd/' title='Ubuntu Server Edition: Диск'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/ubuntu-server-cd.jpg" class="attachment-thumbnail" alt="Ubuntu Server Edition: Диск" title="Ubuntu Server Edition: Диск" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/kubuntu-cover/' title='kUbuntu: Обложка'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/kubuntu-cover.jpg" class="attachment-thumbnail" alt="kUbuntu: Обложка" title="kUbuntu: Обложка" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/kubuntu-inside/' title='kUbuntu: Разворот'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/kubuntu-inside.jpg" class="attachment-thumbnail" alt="kUbuntu: Разворот" title="kUbuntu: Разворот" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/kubuntu-cd/' title='kUbuntu: Диск'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/kubuntu-cd.jpg" class="attachment-thumbnail" alt="kUbuntu: Диск" title="kUbuntu: Диск" /></a>
<a href='http://home.edstudio.net.ru/2009/06/free-from-canonical/bonus/' title='Бонусы: наклейки с логотипом Ubuntu (4 штуки)'><img src="http://home.edstudio.net.ru/wp-content/uploads/2009/06/bonus.jpg" class="attachment-thumbnail" alt="Бонусы: наклейки с логотипом Ubuntu (4 штуки)" title="Бонусы: наклейки с логотипом Ubuntu (4 штуки)" /></a>

<p>P.S.: собственно, я&nbsp;и&nbsp;пост создал чтобы обложки показать. На&nbsp;мой взгляд они достаточно красивые <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2009/06/free-from-canonical/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Пиарим :)</title>
		<link>http://home.edstudio.net.ru/2009/01/pr/</link>
		<comments>http://home.edstudio.net.ru/2009/01/pr/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 14:22:23 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Основная]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[shamangrad]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=21</guid>
		<description><![CDATA[О&#160;сервисе &#171;Шаманград&#187;. Сервис предоставляет услуги svn (SubVersion) хостинга. Для проектов предоставляется svn-репозиторий с&#160;возможностью совместной разработки, система отслеживания ошибок (Bug Tracking System), новостная лента, каталог статей проекта и&#160;FTP хостинг для возможность выкладывать релизы и&#160;другую служебную информацию. Некоторым проектам может быть выделен бесплатный хостинг. &#171;Шаманград&#187; находится на&#160;стадии разработки и&#160;его функциональность постоянно растёт. Также у&#160;&#171;Шаманграда&#187; имеется в&#160;наличии форум [...]]]></description>
			<content:encoded><![CDATA[<p><strong>О&nbsp;сервисе &laquo;<a href="http://shamangrad.net">Шаманград</a>&raquo;.</strong></p>
<p>Сервис предоставляет услуги svn (SubVersion) хостинга. Для проектов предоставляется svn-репозиторий с&nbsp;возможностью совместной разработки, система отслеживания ошибок (Bug Tracking System), новостная лента, каталог статей проекта и&nbsp;FTP хостинг для возможность выкладывать релизы и&nbsp;другую служебную информацию. Некоторым проектам может быть выделен бесплатный хостинг.</p>
<p>&laquo;Шаманград&raquo; находится на&nbsp;стадии разработки и&nbsp;его функциональность постоянно растёт.</p>
<p>Также у&nbsp;&laquo;Шаманграда&raquo; имеется в&nbsp;наличии <a href="http://forum.shamangrad.net">форум</a> и&nbsp;&laquo;<a href="http://qt.shamangrad.net">сборник рецептов</a>&raquo; для разработчиков на&nbsp;Qt.</p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2009/01/pr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка Psi из GIT (*Ubuntu)</title>
		<link>http://home.edstudio.net.ru/2009/01/install-psi-from-git-ubuntu/</link>
		<comments>http://home.edstudio.net.ru/2009/01/install-psi-from-git-ubuntu/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 17:54:26 +0000</pubDate>
		<dc:creator>Erik</dc:creator>
				<category><![CDATA[Решения]]></category>
		<category><![CDATA[*ubuntu]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://home.edstudio.net.ru/?p=11</guid>
		<description><![CDATA[Psi&#160;&#8212; программа для мгновенного обмена сообщениями посредством сети Интернет по&#160;протоколу Jabber. Программа разрабатывается с&#160;использованием открытых исходных кодов и&#160;распространяется под лицензией GPL. Использует библиотеку Qt4&#160;(версия 0.10&#160;более раннюю Qt3), благодаря чему доступна для разных операционных систем. Материал из&#160;Wikipedia. Инструкция по&#160;установке Psi: Устанавливаем GIT sudo apt-get install git-core Скачиваем Psi из&#160;репозитория git clone git://git.psi-im.org/psi.git cd&#160;psi git submodule init [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Psi IM" href="http://psi-im.org" target="_blank"><em><img class="alignright" title="Psi IM" src="http://forum.psi-im.org/unb_lib/designs/psi1/img/psi-logo.png" alt="Psi IM" width="153" height="153" />Psi</em></a>&nbsp;&#8212; программа для мгновенного обмена сообщениями посредством сети Интернет по&nbsp;протоколу Jabber.</p>
<p>Программа разрабатывается с&nbsp;использованием открытых исходных кодов и&nbsp;распространяется под лицензией GPL. Использует библиотеку <a title="Nokia Qt Software" href="http://trolltech.com" target="_blank">Qt4</a>&nbsp;(версия 0.10&nbsp;более раннюю Qt3), благодаря чему доступна для разных операционных систем.</p>
<p>Материал из&nbsp;<a title="Wikipedia — Psi" href="http://ru.wikipedia.org/wiki/Psi" target="_blank">Wikipedia</a>.</p>
<p><span id="more-11"></span><strong>Инструкция по&nbsp;установке Psi:</strong></p>
<ol>
<li>Устанавливаем GIT
<pre class="code">sudo apt-get install git-core</pre>
</li>
<li>Скачиваем Psi из&nbsp;репозитория
<pre class="code">git clone git://git.psi-im.org/psi.git
cd&nbsp;psi
git submodule init
git submodule update</pre>
</li>
<li>Устанавливаем необходимые для сборки программы библиотеки
<pre class="code">sudo apt-get install libqt4-dev libqca2&nbsp;libqca2-dev libqca2-plugin-ossl g++</pre>
</li>
<li>Если требуется поддержка проверки орфографии&nbsp;&#8212; устанавливаем Aspell (не&nbsp;обязательно)
<pre class="code">sudo apt-get install aspell libaspell-dev aspell-ru</pre>
</li>
<li>Собираем и&nbsp;устанавливаем Psi
<pre class="code">./configure
make
sudo make install</pre>
</li>
</ol>
<p><strong>Инструкция по&nbsp;обновлению Psi:</strong></p>
<ol>
<li>Переходим в&nbsp;каталог Psi и&nbsp;очищаем предыдущую сборку
<pre class="code">cd psi
make distclean</pre>
</li>
<li>Обновляем репозиторий и&nbsp;модули
<pre class="code">git pull
git submodule update</pre>
</li>
<li>Пересобираем и&nbsp;устанавливаем
<pre class="code">./configure
make
sudo make install</pre>
</li>
</ol>
<p>Приятной работы <img src='http://home.edstudio.net.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://home.edstudio.net.ru/2009/01/install-psi-from-git-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
