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)
вторник, 21 июля 2009 г.
Сборка OGRE из исходников под Windows, с помощью MinGW и среды Code::Blocks.
пятница, 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/