Sources and scripts for building OSG, osgearth libraries for Windows (MSVC2015, MSVC2019) and Linux
Basic dependencies:
- Compiler MSVC 2015/MSVC 2019/GCC
- CMake
- Qt 5.10.1 or higher
- ERDAS ECW/JP2 SDK v5.4:
To build libraries on Windows and Linux, special scripts BUILD_LIBS were prepared.
Версии используемых библиотек, даты их обновления и внесенные изменения перечислены в файле sources/versions.txt.
При запуске скрипта сборки создаются папки:
- build - содержит копии папок из sources + для каждой библиотеки подпапки build/release, build/debug, в которых происходит сборка библиотек.
- build/_build_log/ - содержит множество *.log файлов, размещенных в папок с названиями библиотек, которые строятся. Может помочь в определении простых проблем построения.
- install - папка, в которую происходит установка собранных библиотек (bin + includes + lib). Именно эта папка нужна конечному пользователю, который хочет собирать у себя Terracore/core3.
В скриптах построения есть возможность исключать из процесса постройки библиотеки, которые не требуют обновления. Например, если вы хотите внести изменения в библиотеку osgearth, то задайте параметр IS_GLOBAL_BUILD=1, а для нужной библиотеки (в данном случае osgearth) задайте параметр IS_OSGEARTH_BUILD=1.
Важно! Не забывайте следить за зависимостями библиотек. Если вы вносите изменения, например, в zlib, то с большой долей вероятности необходимо будет перестроить все библиотеки, которые строятся после zlib.
Построение библиотек производится с использованием Visual Studio 2015 x64.
В первую очередь выполните следующие шаги (описаны в файле dependencies_windows.txt):
- Установите CMake (при тестировании использовалась версия 3.15.0) и добавьте его в системную переменную PATH.
- Установите [NASM] (https://www.nasm.us). Необходим для построения libjpeg-turbo.
После этого отредактируйте скрипт построения BUILD_LIBS.bat:
- Определите нужна ли вам debug сборка. Если нет то установите IS_BUILD_DEBUG=0, что заметно ускорит сборку библиотек.
- Задайте кол-во используемых потоков процессора для построения через NUM_THREADS.
- Если установка Visual Studio 2015 производилась в нестандартную папку, то изучите и, при необходимости, обновите переменные MS_BUILD_*.
- Если CMake не прописан в системную переменную PATH, то задайте путь к CMake в CMAKE_BASE_COMMAND (не протестировано).
- Задайте корректный путь QTDIR к Qt 5.10.1 или выше.
Далее можно запускать скрипт постройки BUILD_LIBS.bat. Я произвожу запуск через powershell. На некоторых ПК требуются права администратора для запуска MSBuild/cl, поэтому рекомендуется запускать powershell с правами администратора.
- Проблема: OpenSceneGraph некоторое время строится, загружает ЦП, но в результате библиотеки не сгенерированы или сгенерированы не все.
Возможное решение: На ноутбуке я наблюдал сброс построения OpenSceneGraph с ошибкой в логах "no heap space".
Чтобы построение прошло успешно, мне пришлось перезапускать построение несколько (~5) раз. С каждым разом OpenSceneGraph достраивал недостающие библиотеки. Чтобы ускорить этот процесс нужно воспользоваться параметром пропуска библиотек, чтобы скрипт сразу переходил к OpenSceneGraph. Если есть мысли как решить эту проблему, пожалуйста напишите @NikkittaP.
- Проблема: Release версия osgQt не построена.
Возможное решение: Если вы видите сообщение "Active code page: 437" при открытии cmd, тогда стоит проверить что находится в файле build\osgQt\build\release\src\osgQt\osgQt5.vcxproj
Если в начале файла имеется то же сообщение (дважды) "Active code page: 437", значит необходимо внести правки в реестр:
Перейдите в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\Autorun и удалите значение "chcp 437".
Попробуйте перезапустить скрипт BUILD_LIBS.bat.
Чтобы оценить необходимые ресурсы для построения всех библиотек в режимах release и debug, привожу свои данные:
- Тест 1
Конфигурация ПК: Core i7-8700 (6/12), 16GB DDR4 2666MHz, 250GB SSD Samsung 960 EVO (на том же диске ОС)
Windows 10 x64
Время затраченное на сборку*: ~2 часа
Результирующий объем папок build и install*: ~22,5GB
- Тест 2
Конфигурация ПК: Core i7-6700K (4/8), 16GB DDR4 2133MHz, 250GB SSD ADATA SP920SS (на том же диске ОС)
Windows 10 x64
Время затраченное на сборку*: 01:45:00
Результирующий объем папок build и install*: ~22,1GB
Построение библиотек производится с использованием gcc.
В первую очередь выполните следующие шаги (описаны в файле dependencies_linux.txt):
-
Установите необходимые зависимости. Для семейства Ubuntu систем:
sudo apt-get install -f build-essential mesa-common-dev nasm libssl-dev pkg-config freeglut3-dev libxmu-dev libxi-dev libsqlite3-dev sqlite3
-
Если системный CMake имеет версию ниже 3.9, тогда необходимо установить последнюю версию с сайта. Инструкция в файле dependencies_linux.txt. Если в системе версия CMake 3.9 или выше, тогда:
sudo apt-get install cmake
-
Установить Qt в папку /opt/Qt5.13.0/.
После этого отредактируйте скрипт построения BUILD_LIBS.sh:
- Определите нужна ли вам debug сборка. Если нет то установите IS_BUILD_DEBUG=0, что заметно ускорит сборку библиотек.
- Задайте кол-во используемых потоков процессора для построения через NUM_THREADS.
- Задайте ОС, на которой производится сборка, с помощью параметра CURRENT_OS. Возможные значения представлены в скрипте. Boost именует файлы указывая версию gcc, для astra 1.6 это 6, для ubuntu 18.04 это 7. Данный параметр помогает избежать проблем с идентификацией библиотек.
- Задайте корректный путь QTDIR к Qt 5.10.1 или выше.
- Если используется несистемный CMake, то задайте значение параметра IS_CMAKE_CMD_WORKING=0 и пропишите путь к исполняемому файлу cmake в параметре CMAKE_CMD
Далее можно запускать скрипт постройки BUILD_LIBS.sh. При запуске скрипта, скрипт проверяет root права и перезапускается уже под рутом.
Чтобы оценить необходимые ресурсы для построения всех библиотек в режимах release и debug, привожу свои данные:
- Тест 1
Конфигурация ПК: VMware. 12 ядер от Core i7-8700 (6/12), 8GB DDR4 2666MHz, 60GB на 250GB SSD Samsung 960 EVO (на том же диске ОС)
Astra SE 1.6 x64
Время затраченное на сборку: 40 минут
Результирующий объем папок build и install: ~10,3GB
- Тест 2
Конфигурация ПК: Core i5-750 (4/4), 12GB DDR3 1333MHz, 120GB SSD ADATA SP600 (на том же диске ОС)
Astra SE 1.6 x64
Время затраченное на сборку: 02:11:21
Результирующий объем папок build и install: ~10,8GB