Manifold Geometry // Многообразная Геометрия

Установка Open CASCADE Technology 6.7.x

/ Просмотров: 6980
Читайте также обновленную версию: Установка OpenCascade 7.0. В новой версии OpenCascade был полностью переработан механизм умных указателей.

Теперь, когда мы определились, что библиотека Open CASCADE Technology (OCCT) нам интересна, самое время развернуть ее на своей рабочей станции. В принципе, никакого шаманства здесь не потребуется, так как процесс установки довольно прост и хорошо документирован. Поэтому в первую очередь рекомендую почитать официальную инструкцию разработчиков: http://dev.opencascade.org/doc/overview/html/index.html. Как правило, следование священному принципу RTFM приводит нас к успеху. И все же для полноты картины опишем процедуру шаг за шагом.

Внимание! Инструкция пишется для версии 6.7.1. В более поздних версиях каскада процедура может измениться.

Шаг 1: получаем исходный код библиотеки

Собирать OCCT будем из его исходников. Это позволит нам самостоятельно делать сборки под любую целевую платформу. Да и вообще наличие исходного кода библиотеки вкупе с умением ее собирать позволяет нам уверенно смотреть в завтрашний день.

Отправной точкой будет служить официальный сайт разработчиков. В списке доступных версий выбираем интересующую нас 6.7.1, после чего попадаем на страницу загрузки. На этом этапе вы можете выбрать установку при помощи Windows Installer, однако, как уже было сказано, нас интересует «чистая» сборка (настоящие индейцы собирают код самостоятельно). Для этого качаем так называемый «универсальный пакет исходников».

Ссылка на архив Open CASCADE Technology

Для загрузки придется заполнить небольшую регистрационную форму. Это обычная практика для поставщиков программного обеспечения, которые собирают статистику скачиваний их продуктов.

В результате первого шага имеем архив opencascade-6.7.1.tgz, который необходимо куда-нибудь распаковать, например (я работаю в Windows):

C:/OCC/opencascade-6.7.1

Внимание! Библиотека Open CASCADE Technology довольно консервативна, поэтому зависимости от сторонних продуктов в ней опциональны. Скажем, всю линейную алгребру каскад реализует самостоятельно, так же как стандартные типы коллекций и многое другое. Тем не менее, определенный набор продуктов желательно иметь, если вы хотите, чтобы:

  1. Работала консоль Draw (Tcl/Tk);
  2. Работала продвинутая функциональность визуализации в 3D (Freeimage, Freetype, gl2ps, OpenCL);
  3. Работали параллельные вычисления (TBB);
  4. Был доступен полный набор демо-приложений (Qt).

Для загрузки сторонних библиотек можно использовать удобную табличку официальных разработчиков. Конечно, все доступные конфигурации скачивать совершенно не обязательно. Загружайте только самые свежие версии продуктов в случае, если у вас нет весомой причины использовать более старые аналоги. Например, для сборки под MS Visual Studio 2010 и 64-разрядной ОС, я скачиваю следующие архивы:

freeimage-3.16.0-vc10-64.zip [Freeimage 3.16]
freetype-2.5.3-vc10-64.zip [Freetype 2.5.3]
gl2ps-1.3.8-vc10-64.zip [gl2ps 1.3.8]
opencl-icd-1.2.11.0-64.zip [OpenCL 1.2.11]
tbb42_20140601oss_win.zip [TBB 4.2 с официального сайта Intel]
tcltk-86-64.zip [Tcl/Tk 8.6]

В моем списке нет Qt, так как сам каскад не зависит от этой библиотеки. Qt нужна для сборки некоторых демо-приложений, но даже в ее отсутствие всегда доступны демо, реализованные на MFC (без лишних зависимостей). Для Windows-сборок этого вполне достаточно.

Скачанные дистрибутивы можно распаковать рядом с директорией OCCT в специально отведенную папку products. В итоге мы имеем следующее дерево директорий (показаны только основные узлы):

C:/OCC/opencascade-6.7.1/adm
                        /data
                        /doc
                        /dox
                        /drv
                        /inc
                        /samples
                        /src
                        /tests
C:/OCC/products/freeimage-3.16.0-vc10-64
               /freetype-2.5.3-vc10-64
               /gl2ps-1.3.8-vc10-64
               /opencl-icd-1.2.11.0-64
               /tbb42_20140601oss
               /tcltk-86-64

Шаг 2: создание проектных файлов при помощи CMake

Изначально библиотека OCCT собиралась довольно хитрым способом — при помощи собственного сборочного «цеха», называемого WOK (Workshop Organization Kit). Во времена, когда системы контроля версий были еще недоступны, а стандарт C++ не описывал механизма шаблонов, разработка индустриальных систем требовала особой тщательности. То, что сегодня воспринимается как данность и хороший стиль, пару десятков лет назад было «конкурентным преимуществом» и «know-how» конкретной фирмы-разработчика. Так, работа над линейкой продуктов EUCLID Quantum велась в «экосистеме» WOK, позволяющей автоматизировать некоторые аспекты программирования на C++ (например, в OCCT есть аналог шаблонных классов — generic-класс) и позволить нескольким командам программистов писать код синхронно.

Теперь эти времена позади. Однако WOK все еще с нами (напомню, что мы ведем рассказ о версии 6.7.1 доступной летом 2014 года), и любители нестандартных решений могут поиграть с этой причудливой сборочной системой в свое удовольствие. Мы же не будем искать героических путей к успеху, и воспользуемся тем, что Open CASCADE Technology поддерживает сборку при помощи известной кросс-платформенной утилиты CMake. Для этого, прежде всего, обратимся к директории adm:

C:/OCC/adm/cmake

Внутри поддиректории cmake находятся CMake-листы всех библиотек, из которых состоит OCCT (каскад содержит не одну, а более 60-ти динамически линкуемых библиотек). Утилита CMake позволяет автоматически скомпоновать из унифицированных CMake-листов вполне конкретные проектные файлы под ту IDE, в которой вы собираетесь работать. Начать нужно с установки утилиты CMake на свою рабочую станцию. Я использовал версию 2.8, взятую с официального сайта разработчиков. После установки запустите CMake GUI:

CMake для сборки Open CASCADE Technology

Для того, чтобы скомпоновать проектные файлы из CMake-листов необходимо выполнить два этапа:

  1. Конфигурирование переменных окружения;
  2. Собственно создание проектных файлов.

Прежде всего укажем, где находятся исходные коды библиотеки OCCT. Также необходимо указать директорию, в которую CMake будет сбрасывать результаты своей работы, т.е. созданные проектные файлы. Более того, непосредственно компиляция при помощи IDE будет вестись не в оригинальной директории с исходниками каскейда, а в целевой директории CMake. Это позволяет предохранить исходные коды библиотеки от порчи. Итак, задаем пару «source-target» директорий:

CMake для сборки Open CASCADE Technology

Нажимаем кнопку «Configure». Теперь, если директории build_debug_vc10 еще нет, CMake предложит создать ее. Затем откроется мастер выбора целевой конфигурации. Условившись, что собирать OCCT мы будем при помощи MS Visual Studio 2010 для платформы x64, выбираем соответствующий компилятор из списка и завершаем процесс нажатием кнопки «Finish»:

CMake для сборки Open CASCADE Technology

Процесс конфигурирования стартует автоматически. По истечении нескольких секунд он завершается с ошибкой:

CMake для сборки Open CASCADE Technology

Ничего критичного не произошло. Просто CMake обнаружил неправильно настроенные переменные среды. Наша с вами задача — указать корректные значения для всех переменных, которые были промаркированы красным цветом. Прежде всего необходимо указать правильные пути к продуктам:

3RDPARTY_DIR = C:/OCC/products

По умолчанию конфигурация настроена на Release, но предпочтительно иметь обе сборки каскада на случай, если ему потребуется сделать небольшое «вскрытие» (сложная платформа легче всего познается «методом пристального вглядывания» в ее исходники).

BUILD_CONFIGURATION = Debug

Обратите также внимание на переменные, имена которых начинаются с лексемы «USE_». Это макросы условной компиляции. Они определяют, будут ли соответствующие сторонние библиотеки (Freeimage, gl2ps, OpenCL и TBB) реально использоваться при сборке. Коль скоро все эти продукты были нами аккуратно загружены в директорию products, имеет смысл выставить релевантные значения переменных окружения:

USE_FREEIMAGE = true
USE_GL2PS = true
USE_OPENCL = true
USE_TBB = true

Снова жмем «Configure» и внимательно следим за окошком сообщений CMake. Если утилите не удастся найти какие-то новые пути (а мы только что «попросили» ее отыскать Freeimage, gl2ps, OpenCL и TBB), соответствующие переменные снова будут помечены красным цветом, а панель сообщений покажет человеко-понятные ругательства в ваш адрес.

CMake для сборки Open CASCADE Technology

В данном случае CMake «ругается» на пустую переменную INSTALL_DIR. Эта переменная содержит имя директории, в которую будет инсталлирована библиотека OCCT после сборки. Заметьте, что в общем случае эта директория отлична от build_debug_vc10. Директория build_debug_vc10 используется для сборки и содержит не только проектные файлы IDE, но и все временные объектные файлы. Директория INSTALL_DIR не будет содержать ничего лишнего. Фактически там будут лежать только те бинарные и ресурсные файлы, которые входят в результирующую поставку Open CASCADE Technology.

INSTALL_DIR = C:/OCC/opencascade-6.7.1/install

Заметьте, что мы выбрали крайне примитивное имя install для окончательной директории. Здесь не закодированы лексемы текущей конфигурации, такие как «debug» или «vc10». Забегая вперед, скажу, что подобная сортировка по конфигурациям будет сделана автоматически при инсталляции. CMake создаст соответствующую структуру после сборки и установки каскада, например:

C:/OCC/opencascade-6.7.1/install/win64/vc10/bind
                                           /libd
                                           /bin
                                           /lid
                                /inc

Здесь одна и та же директория install была использована дважды для конфигураций Release (bin, lib) и Debug (bind, libd). Этот же принцип справедлив по отношению к используемой ОС (поддиректории winXX и linXX) и версии IDE (vc11, vc10, vc9 и т.д.).

Сигналом удачного конфигурирования послужит сообщение «Configuring done», получив которое, вы можете перейти к этапу компоновки проектных файлов. Для этого нажимаем кнопку «Generate». Если все прошло успешно, мы увидим сообщение «Generating done», после чего утилиту CMake можно закрыть.

Шаг 3: сборка Open CASCADE Technology

В директории build_debug_vc10 утилитой CMake были созданы все необходимые проектные файлы для сборки библиотеки. Напомню, что конфигурация предполагала сборку при помощи MS Visual Studio 2010 для 64-разрядной платформы в режиме Debug. Для запуска MS Visual Studio достаточно открыть файл OCCT.sln в IDE. После запуска MS Visual Studio следует еще раз проконтролировать, что целевая конфигурация в среде выбрана правильно:

Сборка Open CASCADE Technology

Наконец, можно запустить процесс компиляции и налить себе заслуженную чашечку кофе/бренди/водки.

Шаг 4: инсталляция Open CASCADE Technology

Как только кофе будет выпит, а каскад собран, все полезные библиотеки и файлы ресурсов могут быть «проинсталлированы» (то есть просто скопированы) в директорию, указанную в переменной CMake INSTALL_DIR. В нашем случае это директория install. Для выполнения этого шага обратите внимание на группу CMakePredefinedTargets в проектном дереве MS Visual Studio:

Сборка Open CASCADE Technology

Нас интересует проект с говорящим именем INSTALL. Соберите его. В результате все библиотеки будут скопированы в целевую директорию. Процесс установки платформы Open CASCADE Technology завершен!

Шаг 5: Hello World

Пробный запуск с целью «что-нибудь увидеть» прост как квадратный трехчлен. Библиотека OCCT предоставляет удобную точку входа практически ко всей имеющейся функциональности посредством командного интерпретатора Test Harness Draw (или просто Draw). Draw — это консоль, базирующаяся на Tcl/Tk. Для ее запуска в директории install находим скрипт draw.bat и выполняем его. Если все было сделано правильно, мы увидим приглашение Draw начать работу с каскадом.

Test Harness Draw Open CASCADE Technology

Выполним подгрузку всех библиотек OCCT:

pload ALL

«Hello World» в терминах каскада — это создание параллелепипеда командой box:

box a 1 1 1

Чтобы увидеть результат дадим следующие команды для Draw:

axo
fit

Test Harness Draw Open CASCADE Technology

Или используем средства визуализации OpenGL:

vinit
vdisplay a
vfit

Test Harness Draw Open CASCADE Technology

OpenGL-сцена интерактивна. Камеру можно вращать и переносить, удерживая клавишу «Ctrl». Завершаем работу с Draw командой exit. За детальным списком доступных команд предлагаю обратиться к официальной документации.

Приятных вам экспериментов!

Комментариев: 1 RSS

This article describes the CMake-based build process, which is now suggested as a standard way to produce the binaries of Open CASCADE Technology from sources.