Показаны сообщения с ярлыком mingw. Показать все сообщения
Показаны сообщения с ярлыком mingw. Показать все сообщения

вторник, 21 июля 2009 г.

Сборка OGRE из исходников под Windows, с помощью MinGW и среды Code::Blocks.

Ogre – это добротный движок рендеринга с открытыми исходниками. Я уже довольно давно посматриваю за его развитием (как и за другими интересными Open Source проектами), периодически собирая его (и вещи на его основе) из исходников, чтобы поиграться с демками. :) Но, к сожалению, до своих проектов, с использованием OGRE, руки пока не доходят.. :(
Однако, рискну поделиться своим скромным опытом в вопросе сборки OGRE с помощью MinGW и черкануть немного об этом, в принципе, достаточно простом процессе. Может кому-то и пригодится (конечно, в первую очередь мне самому).. :)



Для того чтобы собрать OGRE понадобиться:
1.Установленный MinGW (желательно первым способом) и настроенный Code::Blocks.
2.Собственно исходники OGRE. Для начала лучше попробовать архив с последним релизом, т.к.при сборке trunk-версии из репозитория могут быть проблемы требующие вмешательства напильника.. Последний релиз следует искать тут http://www.ogre3d.org/download/source. В моем случае файл OGRE 1.6.2 Source For Windows ( ogre-v1-6-2.zip, 11 April 2009, 46.4Mb ).
3.Архив со сторонними зависимостями (Precompiled Dependencies). Это предварительно скомпилированные сторонние библиотеки. ВНИМАНИЕ, архив зависимостей должен соответствовать вашему компилятору, в нашем случае MinGW (библиотеки для Visual Studio не подойдут). Ищем архив на странице с исходниками http://www.ogre3d.org/download/source. В моем случае Code::Blocks + MingW Precompiled Dependencies (OgreDependencies_CBMinGW_Shoggoth_20090131.zip, 31 January 2009, 21.5Mb ).
4.Если хочется собрать плагин для рендеринга через DirectX (RenderSystem_Direct3D9.dll), то нужно еще установить DirectX SDK (у меня валялся файл DXSDK_Nov08.exe, 507 MB) или просто раздобыть заголовочные файлы от него (библиотечные файлы идут в архиве с зависимостями libd3dx9_30.a, libd3dx9d_30.a, libd3d9.a, а либы для Visual Studio из SDK все равно не подойдут). В принципе можно положить на DirectX болт, так есть еще OpenGL рендер (RenderSystem_GL.dll), который прекрасно собирается без DirectX SDK и позволяет запускать все стандартные демки OGRE. Нужно только пропатчить файл Plugins.cfg в директории с собранными демками перед запуском и закаментить или вообще убрать строчку «Plugin=RenderSystem_Direct3D9».

Прибарахлились. Можно ехать дальше..

Распаковываем архив с исходниками ogre-v1-6-2.zip в какую-нибудь папку. Я буду предполагать, что исходники распакованы в папку «c:\dev».
Распаковываем зависимости OgreDependencies_CBMinGW_Shoggoth_20090131.zip в папку с исходниками OGRE «c:\dev\ogre».
Запускаем Code::Blocks и открываем в нем файл рабочей области «c:\dev\ogre\Ogre.workspace».
Если у вас многоядерная система и есть желание ускорить процесс сборки, проверьте настройки компиятора и укажите сколько процессов использовать для сборки (об этом я писал в конце поста про Code::Blocks). Это делается в меню Code::Blocks «Settings->Compiler and Debugger..->Global compiler settings» на вкладке «Other settings»
Если DirectX SDK установлен пропишите его в путях компилятора. Code::Blocks «Settings->Compiler and Debugger..->Global compiler settings» на вкладке «Search directories» в суб-вкладке «Compiler» добавьте путь к заголовочным файлам DirectX, у меня это «C:\Program Files\Microsoft DirectX SDK (November 2008)\Include».
Если на DirectX Вы забили, то закройте проект RenderSystem_Direct3D9, чтобы не было ругани при попытке его сборки (правой на названии «Close project»).

Все готово к сборке :). Жмем в меню Code::Blocks «Build->Build workspace» и идем пить чай пока идет сборка.

Если во время сборки не было ошибок, то все клево. Идем в папку «c:\dev\ogre\Samples\Common\bin\Release\» и любуемся собранными демками. Если нужно отключаем DirectX в Plugins.cfg.

Если у Вас не пашет пример Demo_BspCollision.exe, то попробуйте добавить строчку «dInitODE();» в начало конструктора OgreRefApp::World::World («c:\dev\ogre\ReferenceApplication\ReferenceAppLayer\src\OgreRefAppWorld.cpp») и пересоберите проект Demo_BspCollision.

Ссылки по теме:
http://www.ogre3d.org
http://www.ogre3d.ru

На сегодня все. Удачной компиляции! :)

P.S. К сожалению, я здесь упустил один момент. В wiki на ogre3d.org есть замечание о том что их тулбокс с mingw использует модифицированную версию библиотеки libstdc++, т.к. при использовании стандартной версии идущей с gcc-g++ при передачи строк между dll возникают проблемы с памятью (из за того что libstdc++ статически линкуется к каждой dll). Насколько я понял это в основном касается OgrePlatform и OgreMain из OGRE 1.4.x. Но по всей видимости в Ogre 1.6.x код из OgrePlatform перекочевал в OgreMain, и возможно проблема уже не актуальна :).. Во избежание неприятных последствий можно перестраховаться и воспользоваться TDM Mingw (где уже сделаны необходимые модификации), либо использовать тулбокс с ogre3d.org обновив пакеты w32api и mingwrt (w32api-3.13-mingw32-dev.tar.gz, mingwrt-3.15.2-mingw32-dev.tar.gz)

Читать дальше......

пятница, 19 июня 2009 г.

Установка MinGW

MinGW - это нативный порт компиляторов GCC на платформу Windows. На сегодняшний день является наиболее «вменяемой» бесплатной альтернативной коммерческим компиляторам. Повсеместно применяется для разработки кросс-платформенных приложений. Например, именно MinGW используется в качестве компилятора С++ под Windows в средах разработки Qt Creator, Code::Blocks (в качестве основного), NetBeans и Eclipse.

Ниже я перечислю основные особенности MinGW и опишу несколько способов для его установки.


Для начала перечислю важные (на мой взгляд) особенности MinGW. ;)

Основные достоинства:
+ полностью бесплатен;
+ генерирует хороший быстрый код;
+ непрерывно развивается;
+ удобство и компактность установки.

Основные недостатки:
- Относительно медленная компиляция C++ кода;
- Относительно медленная линковка результирующего файла;
- Несовместимость с, содержащими C++ классы, *.lib и *.dll файлами созданными в MS Visual Studio. По этой причине MinGW и PhysX SDK не дружат друг с другом..

Для того чтобы заполучить на свой компьютер готовый к работе MinGW, существует несколько способов.

Способ 1- использовать автоматический установщик с официального сайта MinGW.
Установщик официальной версии MinGW следует искать на сайте http://mingw.org/
На момент написания этих строк файл установщика называется «MinGW-5.1.4.exe» и его можно загрузить со страницы загрузки.
Установщик состоит из одного файла «MinGW-5.1.4.exe» и имеет мизерный разер (~140 KB). Непосредственно при установке он выкачивает дополнительные архивы с компонентами GCC. По умолчанию MinGW ставиться в папку «c:\mingw» Перед установкой рекомендую поместить «MinGW-5.1.4.exe» в отдельную пустую папку, т.к. все выкаченные архивы кэшируются в папке откуда запущена установка. Если ничего не удалять, то можно все это добро скопировать и устанавливать без интернета, запуская все тот же «MinGW-5.1.4.exe».

Следует отметить, что при установке через «MinGW-5.1.4.exe», можно выбрать версию Mingw (Previous, Current, Candidate), инсталлятор регистрирует установку в системе и предоставляет возможность обновления и удаления текущей установки.
Если MinGW ставится для работы с Code::Blocks, то при установке рекомендую выбрать версию «Candidate», а среди устанавливаемых компонентов должны быть обязательно отмечены «MinGW base tools», «g++ compiller» и «MinGW Make».

Способ 2 - Выкачать нужные пакеты с http://mingw.org вручную или воспользоваться архивами полученными при установки первым способом.
Приведу список файлов которые скачивает официальный установщик MinGW для версии Candidate:

gdb-6.8-mingw-3.tar.bz2
mingw32-make-3.81-2.tar.gz
binutils-2.18.50-20080109-2.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
w32api-3.13-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dev.tar.gz
gcc-core-3.4.5-20060117-3.tar.gz

Не нужно даже прибегать к запуску инсталлятора, достаточно просто разархивировать все архивы в одну папку. Для распаковки можно воспользоваться замечательным бесплатным архиватором 7-zip (http://www.7-zip.org/).

И еще, отладчик gdb (который будет очень кстати при работе в среде Code::Blocks) придется качать отдельно в секции загрузки http://mingw.org

Способ 3 - Использовать заранее подготовленный пакет установки от сторонних разработчиков включающий все что требуется.
Вроде бы самый удобный способ. Но может так случиться, что однажды подготовленный пакет уже больше никогда не обновится и станет неприемлем для использования из-за неактуальных версий программ, библиотек и заголовочных файлов. Или же обновления этого пакета могут сильно задержаться.. :)

Примером может служить пакет MinGW С++ Toolbox предлагаемый (в связке с Code::Blocks ;) в качестве альтернативного инструментария для сборки и работы с движком рендеринга Ogre. Никаких специфических ограничений и заточек под Ogre в нем нет, и я давно использовал его просто как удобный «все-в-одном» инсталлятор MinGW. Все было замечательно. :) Но однажды случилось страшное.. В очередной раз решив собрать свежий Ogre, потыкать примеры и заставить себя чего-нибудь на нем слепить, я обнаружил что исходники относительно недавно вышедшего Ogre 1.6.2 у меня просто не собираются этим пакетом инструментов (требуется обновление w32api до версии 3.13). К слову, установка MinGW версии Candidate первым способом позволила решить эту проблему. ;) Хотя данный пакет в целом не плох и ранее всегда справлялся со своими задачами. Если требуется компактный инсталлятор со стабильным MinGW для общих задач, то можно со спокойной душой качать MinGW_Toolbox_Setup_wr1 c ogre3d.org. Будем наедятся что актуальная версия этого пакета появится в скором времени.

Если поискать, то в интернете, можно найти и другие сборки MinGW от энтузиастов. Как правило это просто само-распаковывающихся архивы.

Совсем недавно мне попалась альтернативная сборка последних версий GCC/Mingw32 - TDM-MinGW http://www.tdragon.net/recentgcc/
Она является неофициальной и, как заявляют разработчики, предназначена для экспериментальных целей. Но судя по всему ее можно использовать, если она не вызывает проблем в конкретном проекте. :) Я ее еще не испытывал на сборке крупных вещей, но со временем постараюсь это исправить.
Сборка имеет полноценный инсталлятор. При установки можно выбрать между стабильными и экспериментальными вариантами исполнительных фалов MinGW. Включает в себя все необходимое для сборки и отладки С++ проектов (make,gcc,gdb).
Из плюсов этой сборки несомненным является ее регулярное обновление.
Качать Bundled Installer. Размер около 26 MB.

Способ 4 - скачать среду разработки со встроенным MinGW. :)
Один самый ленивый способ, которым я пользовался когда-то давно. Я ставил Code::Blocks с MinGW в комплекте и накатывал ночные сборки поверх.
Из плюсов можно отметить что отпадает вопрос настройки среды разработки. :) Но в тоже время если поставить Qt Creator или старину wxDevCpp со встроенным MinGW и потом настроить использование его в Code::Blocks получится путаница и последующие лишние телодвижения при удалении и обновлении вышеупомянутых программ. Если в скачиваемой программе MinGW идет в комплекте и никому не мешает, то это прекрасно. Но для остальных программ лучше использовать отдельную инсталляцию MinGW в папку «c:\mingw», т.к. там они его буду искать в первую очередь.

Думаю на сегодня хватит про MinGW.

В ближайшее время постараюсь (как и обещал ранее) написать про установку ночных сборок Code::Blocks и их первичную настройку.

Читать дальше......

вторник, 16 июня 2009 г.

Cреда разработки Code::Blocks

Несколько лет назад я случайно попробовал Code::Blocks и он меня «зацепил». В 20 мегабайтах инсталлятора скрывалась полноценная среда программирования готовая к работе сразу после минутной установки. Ее можно было быстро и без геморроя развернуть на любой подручной машине, в отличие от C++ Builder 6, который я использовал, и MS Visual Studio, на который я заглядывался ,но так и не перелез из-за ненадобности. С тех пор много воды утекло но для своих С++ проектов и экспериментов я стараюсь использовать именно Code::Blocks.

Не претендуя на полноту и оригинальность, я все же расскажу немного об этом добротном инструменте. ;)


Code::Blocks - это интегрированная кроссплатформенная среда разработки для языков С, C++ и D.
На мой взгляд, она хорошо подходит для изучения С/С++ и разработки относительно небольших проектов.

Перечислю главные, на мой взгляд, особенности программы:
+ Code::Blocks написан на С++ с использованием библиотеки wxWidgets, поэтому работает довольно шустро и кушает мало ресурсов системы (в отличие от Eclipse и Netbeans, написанных на Java).
+ Встроенный редактор кода базируется на компоненте Scintilla и предлагает подсветку синтаксиса для десятка языков с возможностью свертывания фрагментов кода. К слову сказать, Scintilla так же используется в редакторах SciTE и Notepad++.
+ Возможность экспорта исходника (с подсветкой синтаксиса) в html, odt, pdf и rtf.
+ Кроссплатформенность. Среда прекрасно работает в Windows и Linux.
+ Хорошо поддерживает разработку программ с использованием wxWidgets.
+ Поддержка множества компиляторов. Кроме GСС/MinGW поддерживаются и компиляторы от Microsoft, Borland, Intel, Digital Mars. Но на мой взгляд, GСС/MinGW интегрированы в среду наиболее плотно и лучше использовать именно их.
+ Интегрированный отладчик. Вполне терпимый.
+ Автодополнение кода. Вполне терпимое. :)
+ Удобные функции поиска по проекту.
+ Богатые возможности по настройке проекта.
+ Простой и удобный интерфейс. Хотя местами возможно деревянный. :)
+ Поддержка плагинов. Можно писать свои модули расширений. Например новые типы редакторов.Множество стандартных плагинов облегчающих жизнь:
* Source code formatter (Astyle) – расставляет отступы в коде и приводит к выбранному стилю. Удобно если вам попался чужой код форматирование которого съехало, либо его изначально не было. ;)
* wxSmith – визуальный редактор форм для проектов на базе wxWidgets.
* DragScroll – позволяет зажав в редакторе кода правую кнопку мыши прокручивать код.
* Profiler, Devpak installer, HexEditor и д.р.
+ Code::Blocks достаточно легко можно собрать из исходников. Это может понадобится если установить плагин от сторонних разработчиков (Например: плагин для поддержки Svn или разработка на Python).
+ Постоянное развитие проекта, регулярно появляются новые фичи. Ночные сборки под Windows (Nights Builds) c последними исправлениями ошибок и новыми возможностями выходят регулярно не реже раза в месяц, а иногда и каждый день. :)

Неплохо для Проекта развивающегося на голом энтузиазме? :)

В Code::Blocks достаточно комфортно можно изучать чужие исходники, активно используя функцию поиска упоминаний выделенного класса или просто текста.
Ночная сборка занимает около 7 мегабайт в архиве, но для нее необходимо устанавливать MinGW отдельно (плюс 19 мегабайт).
В распакованном виде Code::Blocks и MinGW занимают около 100 мегабайт.
Можно смело ставить на нетбук. :)

В следующем посте постараюсь рассказать об установке и настройке ночных сборок под Windows (Nights Builds).

Интересующимся другими бесплатными средами кроссплатформенной разработки на С++ рекомендую посмотреть:
Qt Creator - Хорошая среда для разработки на Qt (написано на C++)
Eclipse C/C++ Development Tooling - CDT - Среда на базе Eclipse (написано на Java).
NetBeans - Среда в основном для Java но имеется поддержка C++ (написано на Java)/

Что еще посмотреть:
http://www.codeblocks.org/downloads – страница загрузки
http://ru.wikipedia.org/wiki/Code::Blocks
http://alenacpp.blogspot.com/2005/10/codeblocks-studio.html
http://wxwidgets.info/tag/codeblocks/

Читать дальше......