Сборка уроков

Опубликовано NowhereMan - чт, 09/17/2020 - 22:39

В этом разделе описывается, как собрать уроки.

Что вам нужно скачать. Очевидно, что вам понадобится компилятор C++ и среда сборки. Вам также понадобятся операционные системы Windows или Linux, так как это единственные ОС, поддерживаемые в уроках. Поддерживаемые среды сборки включают Visual Studio 2008/2010, Code::Blocks и GNU Makefiles на базе Linux. Другие сборочные системы могут работать, но они не тестируются регулярно.

Вам необходимо загрузить файл дистрибутив исходных текстов; загрузить файл .7z с наибольшим номером версии. Все библиотеки, необходимые для сборки уроков, входят в состав дистрибутива, так что это единственное, что вам понадобится для скачивания исходных текстов.

Вам также необходимо загрузить утилиту Premake 4 для выбранной вами платформы. Поместите исполняемый файл куда-нибудь в вашем командном пути.

Вам потребуется минимальное знание командной строки, чтобы построить эти учебники. Кроме того, любые упомянутые каталоги всегда относительны к тому месту, где вы распаковали этот дистрибутив.

Расположение файлов в дистрибутиве. Расположение файлов в каталоге уроков достаточно простое. Каталог framework и все каталоги вида Tut* содержат исходный код самих учебников. Каждая директория Tut* содержит код для различных уроков. Каталог framework просто содержит код утилиты, который обычно используется в каждом уроке.

Каждый урок содержит один или несколько проектов; на каждый проект даются ссылки в тексте этого урока.

Каталог Documents содержит исходный текст текстовой документации, объясняющей, как работают эти учебники. Этот исходный текст находится в xml файлах, использующих формат DocBook 5.0.

Другие каталоги либо содержат библиотеки, используемые уроками, либо файлы данных, которые загружаются уроками.

Premake 4. Premake - это утилита типа CMake: она генерирует файлы сборки для определенной платформы. В отличие от CMake, Premake - это утилита, работающая исключительно из командной строки. Скрипты сборки Premake написаны на языке Lua, в отличие от скриптов сборки CMake, использующих свой собственный язык.

Обратите внимание, что Premake генерирует только сборочные файлы; после создания сборочных файлов их можно использовать как обычно. Он может генерировать проектные файлы для Visual Studio, Code::Blocks, а также GNU Makefiles. И если вы не хотите изменять одно из руководств, вам нужно запускать Premake только один раз для каждого из них.

Premake загружается в виде предварительно собранного исполняемого файла для всех интересующих платформ, включая Linux.

Неофициальный OpenGL SDK. В комплект поставки входит неофициальный OpenGL SDK (скачивать отдельно его не нужно). Это совокупность библиотек, объединяющая ряд инструментов для разработки OpenGL-приложений, объединенных в единую систему сборки. Загружать его не нужно, версия SDK входит в дистрибутив учебника. Копия, поставляемая вместе с учебниками, не содержит ни документации, ни GLFW.

Библиотека SDK использует Premake для генерации своих сборочных файлов. Итак, с помощью premake4.exe в пути откройте командную строку и перейдите в каталог glsdk. Введите premake4 plat, где plat - название выбранной платформы. Для Visual Studio 2008 это будет "vs2008"; для VS2010 - "vs2010". При этом будут сгенерированы проекты и файлы решений Visual Studio для данной версии.

Для сборок GNU и makefile это "gmake". Это сгенерирует makefile. Для сборки для отладки используйте make config=debug; аналогично, для сборки для выпуска используйте make config=release.

Используя сгенерированные сборочные файлы, скомпилируйте их как для отладки, так и для релиза. Вы должны собрать все решение целиком, в уроках используются все предоставляемые библиотеки. Не пытайтесь запускать SDK из IDE, это всего лишь набор библиотек. Все, что вам нужно сделать, это скомпилировать их для отладки и релиза.

Также нет необходимости выполнять make install или подобные команды после сборки SDK. Комплект SDK предназначен для использования там, где он есть; он не устанавливается ни в какие системные каталоги на вашей машине. Кстати, также как и эти уроки.

Сборка и запуск уроков

Каждый каталог учебника имеет файл premake4.lua; этот файл используется Premake для генерации файлов сборки для этого учебника. Следовательно, для сборки любого учебника вам нужно только перейти в этот каталог и набрать premake4 plat, а затем использовать эти файлы сборки для сборки учебника.

Каждое учебное пособие, как правило, имеет более одного исходного файла и генерирует несколько исполняемых файлов. Каждый исполняемый файл представляет собой отдельный раздел урока, как описано в документации к этому уроку.

Если вы хотите собрать все учебники сразу, перейдите в корневую директорию дистрибутива и используйте Premake с файлом premake4.lua в этом каталоге. Это поместит все учебники в один гигантский проект, который вы сможете собрать.

Если вы посмотрите на любой из исходных файлов учебника, вы не найдете нигде функции main. Эта функция определена в framework/framework.cpp; она и все остальные исходные файлы в каталоге framework являются общими для каждого учебника. Он выполняет основную работу с шаблоном: создает окно FreeGLUT и т.д. Это позволяет в исходных файлах учебника сосредоточиться на полезном коде, специфичном для OpenGL.

Обратите внимание, что проект фреймворка - это библиотека, а не исполняемый файл. Поэтому попытка запустить фреймворк из выбранной вами IDE не сработает. Вы должны выбрать один из обучающих проектов и установить его в качестве активного проекта. Тогда вы сможете запустить это учебное пособие из IDE.