2016-04-29 4 views
0

Я скомпилировал OpenSceneGraph 3.4.0 на Linux (32-разрядный), установив флажки OFF DYNAMIC_OPENSCENEGRAPH и DYNAMIC_OPENTHREADS и включив приложения и примеры в CMake.Компиляция osgconv на Linux статически с поддержкой obj-файлов

Построение было успешным, и у меня есть статические библиотеки, а также пример osgstaticviewer, который работает правильно.

Затем я попытался скомпилировать osgconv, используя только статические библиотеки, используя CMakeLists.txt, скопированный из osgstaticviewer, и измененное добавление поддержки obj и исходных исходных файлов osgconv. Работа компиляции и итоговые исполняемые файлы, но я не могу преобразовать obj-файл в файл osg. В частности, если я пытаюсь команда:

./osgconv myModel.obj myModel.osg 

я получаю следующее предупреждение:

Warning: Could not find plugin to read objects from file "myModel.obj". 
Error no data loaded. 

Что процедура для связывания статически OSG плагин?

Ниже CMakeLists.txt используется для компиляции osgconv:

#this file is automatically generated 

SET(TARGET_ADDED_LIBRARIES osgdb_obj osgdb_ive osgdb_openflight osgdb_osg osgdb_rgb osgdb_osg) 
SET(TARGET_ADDED_LIBRARIES ${TARGET_ADDED_LIBRARIES} 
    osgdb_deprecated_osg osgdb_deprecated_osgparticle osgdb_deprecated_osganimation 
    osgdb_deprecated_osgfx osgdb_deprecated_osgsim osgdb_deprecated_osgtext 
    osgdb_deprecated_osgviewer osgdb_deprecated_osgshadow osgdb_deprecated_osgterrain 
    osgdb_deprecated_osgvolume osgdb_deprecated_osgwidget 
) 
SET(TARGET_ADDED_LIBRARIES ${TARGET_ADDED_LIBRARIES} 
    osgdb_serializers_osg osgdb_serializers_osgparticle osgdb_serializers_osgtext 
    osgdb_serializers_osgterrain osgdb_serializers_osganimation osgdb_serializers_osgfx 
    osgdb_serializers_osgshadow osgdb_serializers_osgmanipulator osgdb_serializers_osgsim 
    osgdb_serializers_osgvolume 
) 

IF(FREETYPE_FOUND) 
    ADD_DEFINITIONS(-DUSE_FREETYPE) 
    SET(TARGET_ADDED_LIBRARIES ${TARGET_ADDED_LIBRARIES} osgdb_freetype) 
ENDIF(FREETYPE_FOUND) 

SET(TARGET_SRC 
    OrientationConverter.cpp 
    osgconv.cpp 
) 
SET(TARGET_H 
    OrientationConverter.h 
) 

SETUP_APPLICATION(osgconv) 

ответ

1

Вам нужно изменить источник osgconv иметь USE_OSGPLUGIN макроса видел связывание поддержки различных плагин здесь: http://trac.openscenegraph.org/projects/osg//browser/OpenSceneGraph/trunk/examples/osgstaticviewer/osgstaticviewer.cpp#L40

+0

решаемых добавления USE_OSGPLUGIN макросы, но также и другие необходимые макросы внутри osgstaticviewer.cpp (USE_DOTOSGWRAPPER_LIBRARY и USE_SERIALIZE_WRAPPER_LIBRARY). Добавляя только USE_OSGPLUGIN, он дает мне результат с 0 байт. –