# osg_pack **Repository Path**: downloadtool/osg_pack ## Basic Information - **Project Name**: osg_pack - **Description**: Scripts to build osg & osgearth - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-01 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # osg_pack 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: * https://download.hexagongeospatial.com/downloads/ecw/erdas-ecwjp2-sdk-v54-update-1-for-windows * https://download.hexagongeospatial.com/downloads/ecw/erdas-ecw-jp2-sdk-v54-update-1-for-linux 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**. ## Windows ### Настройки Построение библиотек производится с использованием 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 с правами администратора. ### Возможные проблемы 1. **Проблема:** OpenSceneGraph некоторое время строится, загружает ЦП, но в результате библиотеки не сгенерированы или сгенерированы не все. **Возможное решение:** На ноутбуке я наблюдал сброс построения OpenSceneGraph с ошибкой в логах "no heap space". Чтобы построение прошло успешно, мне пришлось перезапускать построение несколько (~5) раз. С каждым разом OpenSceneGraph достраивал недостающие библиотеки. Чтобы ускорить этот процесс нужно воспользоваться параметром пропуска библиотек, чтобы скрипт сразу переходил к OpenSceneGraph. Если есть мысли как решить эту проблему, пожалуйста напишите @NikkittaP. 2. **Проблема:** 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 ## Linux Построение библиотек производится с использованием 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