Nebula CommunityСтатьи

Разбор кода Nebula Device2. Часть 2. Сборка движка (статья 2 - настройка и построение проектов).

Автор:

Построение решения проектов движка Nebula Device 2



Начало тут

Сборка проекта движка небулы

Запускаем msvc2008ee. Открываем сгенерированный системой сборки небулы проект с названием nebula2libs в директории nebula2\build\vstudio8.


pic13 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).
pic14 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

Обычно предлагается преобразовать проект – соглашаемся.
pic15 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

После того как проект будет преобразован в той же папке с проектами обычно появляется файл решения  nebula2libs.sln, созданный автоматически, или же среда msvc сама предлагает его создать при попытке закрыть окно приложения.

Я, конечно, предполагаю, что те, кто читает эту статью, - программисты. Но если нет, то на всякий случай приведу краткое описание базовых операций, которые понадобятся при настройке проектов в msvc2008ee.

В директории nebula2\build\vstudio8 необходимо найти файл nebula2libs.sln и запустить его двойным кликом. IDE msvc2008ee работает с так называемыми решениями – набором проектов. В окне рабочей среды для разработки можно увидеть список проектов, которые есть в этом решении.


build_A01 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

Чтобы открыть окно с описанием свойств проекта, нужно выделить интересующий проект левой кнопкой мыши и кликнуть на нем правой кнопкой мыши. Появится контекстное меню, где в самом низу будет пункт «Свойства». Его и нажимаем:


build_A02 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).
Появится окно с набором разнообразных настроек проекта:
build_A03 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

При работе в основном нужно будет знать расположение следующих настроек. Часто надо будет подключать различные заголовочные файлы (.h) и файлы статических библиотек (.lib) разных SDK, библиотек, API. Пути к дополнительным заголовочным файлам задаются в пункте «Дополнительные каталоги включения». Для того, чтобы найти этот пункт настроек, нужно открыть окно свойств проекта. В левом подокне раскрыть список «Свойства конфигурации», далее раскрыть список “C/C++”, выделить запись «Общие». После этого в правом подокне окна свойств появится список пунктов настроек, среди которых должен быть пункт «Дополнительные каталоги включения». При его активации левой кнопкой мыши в конце строки появится кнопка с многоточием. Если нажать эту кнопку с многоточием, появится диалог задания путей к заголовочным файлам:


build_A04 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).
Кнопка с изображением папки служит для создания строки, в которой можно вручную или с помощью кнопки обзора прописать путь к каталогу с заголовочными файлами.
build_A05 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

Другой элемент настроек – это командная строка. В ней можно задать макросы препроцессора или убрать их. Чтобы найти настройки командной строки, нужно в левом подокне раскрыть список «Свойства конфигурации», далее раскрыть список “C/C++”, выделить запись «Командная строка». В правом нижнем подокне с названием «Дополнительные параметры» можно задать макросы препроцессора и другие аргументы командной строки.


build_A06 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

При сборке исполняемых файлов обычно появляется еще и список настроек компоновщика, но при сборке статических библиотек он отсутствует. Переходим к настройке проектов.

Настраиваем переменные препроцессора

В каждом! из проектов (microtcl, napplication, ndinput8, ndirect3d9, ndshow, ndsound, ngui, nkernel, nnebula, nnetwork, ntoollib) решения необходимо задать переменные препроцессора следующим способом:

Заходим в свойства проекта, “Свойства конфигурации”, “C/C++”, “Командная строка”. В поле “Дополнительные параметры” прописываем переменные:

/D "WINVER=0x0501"


Приведу в качестве примера скриншот с заданием этого макроса в проекте nkernel:
build_A07 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

Небольшое объяснение. Макрос WINVER нужно установить в 0x0501, чтобы препроцессор смог открыть код, предназначенный для систем Windows XP и выше в заголовочных файлах.
Если интересно, можно еще глянуть сюда

Сборка проектов в решении

Начинаем сборку с проекта nkernel. Прописываем путь к папке “Include” установленного DirectX SDK. Вот пример как это выглядит у меня (у вас, естественно, заголовочные файлы DXSDK могут лежать в другой папке – ее и прописывайте):


build_A08 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

Теперь можно построить проект nkernel, для чего нужно выбрать его, кликнуть правой кнопкой по проекту, и выбрать в появившемся контекстном меню пункт «Только проект», «Построить только nkernel»:


build_A09 | Разбор кода Nebula Device2. Часть 2.  Сборка движка (статья 2 - настройка и  построение проектов).

Если построение завершится успешно, то в директории nebula2\build\vstudio8\inter\win32d должен появиться файл “d_nkernel.lib”.

Небула использует несколько сторонних библиотек, которые нужно подключить к ней. Это так называемые dependencies – библиотеки, от которых код небулы зависит и использует. По началу при скачивании небулы я не обратил внимания, что там же есть пакет с файлами сторонних библиотек и скачивал их по отдельности вручную. Позже я наткнулся на этот пакет и дальше буду описывать более легкий способ подключений сторонних библиотек чем тот, которым я пользовался до обнаружения пакета dependencies.

Итак, скачать готовый пакет заголовочных файлов и скомпилированных статических библиотек сторонних библиотек можно по этой ссылке

Качать нужно файл nebula-vc8-deps-20070409.zip. Распакуйте этот архив в какую-нибудь папку. Внутри распакованного архива, вы обнаружите директорию  code\nebula2\inc. Скопируйте папки ogg, sqlite и vorbis из нее в директорию nebula2\code\nebula2\inc.

Сборка проектов в решении

Настройку и построение проекта nkernel я описал выше. Опишу настройку остальных проектов. Для проектов ndirect3d9, ndsound, ndinput8, ndshow нужно прописать путь к заголовочным файлам DXSDK. Каждый проект строим отдельно в следующем порядке:

В результате в директории nebula2\build\vstudio8\inter\win32d должны появиться файлы: d_nkernel.lib, d_nnebula.lib, d_ndirect3d9.lib, d_ndsound.lib, d_ndinput8.lib, d_ndshow.lib, d_nnetwork.lib, d_ntoollib.lib, d_ngui.lib, d_napplication.lib, d_microtcl.lib. Сборку релизной конфигурации описывать не буду – все делается аналогично. Если будет нужно, сами разберетесь.

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

24 января 2016