Hi,

I have compile OSG with OSG_USE_FLOAT_BOUNDINGBOX and
OSG_USE_FLOAT_BOUNDINGSPHERE to OFF. Then, when I try to
compile VPB, it hangs on :

3>DataSet.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float & __thiscall
osg::BoundingBox::yMax(void)" ([EMAIL PROTECTED]@osg@@QAEAAMXZ)
referenced in function "public: bool __thiscall vpb::DataSet::addModel(enum
vpb::Source::Type,class osg::Node *)" ([EMAIL PROTECTED]@vpb@
@[EMAIL PROTECTED]@[EMAIL PROTECTED]@osg@@@Z)
3>DataSet.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float & __thiscall
osg::BoundingBox::yMin(void)" ([EMAIL PROTECTED]@osg@@QAEAAMXZ)
referenced in function "public: bool __thiscall vpb::DataSet::addModel(enum
vpb::Source::Type,class osg::Node *)" ([EMAIL PROTECTED]@vpb@
@[EMAIL PROTECTED]@[EMAIL PROTECTED]@osg@@@Z)
3>DataSet.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float & __thiscall
osg::BoundingBox::xMax(void)" ([EMAIL PROTECTED]@osg@@QAEAAMXZ)
referenced in function "public: bool __thiscall vpb::DataSet::addModel(enum
vpb::Source::Type,class osg::Node *)" ([EMAIL PROTECTED]@vpb@
@[EMAIL PROTECTED]@[EMAIL PROTECTED]@osg@@@Z)
3>DataSet.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float & __thiscall
osg::BoundingBox::xMin(void)" ([EMAIL PROTECTED]@osg@@QAEAAMXZ)
referenced in function "public: bool __thiscall vpb::DataSet::addModel(enum
vpb::Source::Type,class osg::Node *)" ([EMAIL PROTECTED]@vpb@
@[EMAIL PROTECTED]@[EMAIL PROTECTED]@osg@@@Z)
3>Destination.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float __thiscall
osg::BoundingBox::radius(void)const " ([EMAIL PROTECTED]@osg@@QBEMXZ)
referenced in function "public: class osg::Node * __thiscall
vpb::DestinationTile::createHeightField(void)"
([EMAIL PROTECTED]@vpb@@[EMAIL PROTECTED]@@XZ)
3>ShapeFilePlacer.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float __thiscall
osg::BoundingBox::yMax(void)const " ([EMAIL PROTECTED]@osg@@QBEMXZ)
referenced in function "public: virtual void __thiscall
ShapeFileOverlapingHeightFieldPlacer::apply(class osg::Geode &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@@@Z)
3>ShapeFilePlacer.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float __thiscall
osg::BoundingBox::xMax(void)const " ([EMAIL PROTECTED]@osg@@QBEMXZ)
referenced in function "public: virtual void __thiscall
ShapeFileOverlapingHeightFieldPlacer::apply(class osg::Geode &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@@@Z)
3>ShapeFilePlacer.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float __thiscall
osg::BoundingBox::yMin(void)const " ([EMAIL PROTECTED]@osg@@QBEMXZ)
referenced in function "public: virtual void __thiscall
ShapeFileOverlapingHeightFieldPlacer::apply(class osg::Geode &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@@@Z)
3>ShapeFilePlacer.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: float __thiscall
osg::BoundingBox::xMin(void)const " ([EMAIL PROTECTED]@osg@@QBEMXZ)
referenced in function "public: virtual void __thiscall
ShapeFileOverlapingHeightFieldPlacer::apply(class osg::Geode &)"
([EMAIL PROTECTED]@@[EMAIL PROTECTED]@@@Z)


So, I have added the same two options as OSG in Cmake for VPB  :

OPTION(OSG_USE_FLOAT_BOUNDINGSPHERE "Set to ON to build VirtualPlanetBuilder
with float BoundingSphere instead of double." ON)
MARK_AS_ADVANCED(OSG_USE_FLOAT_BOUNDINGSPHERE)
IF(NOT OSG_USE_FLOAT_BOUNDINGSPHERE)
    ADD_DEFINITIONS(-DOSG_USE_DOUBLE_BOUNDINGSPHERE)
ENDIF(NOT OSG_USE_FLOAT_BOUNDINGSPHERE)

OPTION(OSG_USE_FLOAT_BOUNDINGBOX "Set to ON to build VirtualPlanetBuilder
with float BoundingBox instead of double." ON)
MARK_AS_ADVANCED(OSG_USE_FLOAT_BOUNDINGBOX)
IF(NOT OSG_USE_FLOAT_BOUNDINGBOX)
    ADD_DEFINITIONS(-DOSG_USE_DOUBLE_BOUNDINGBOX)
ENDIF(NOT OSG_USE_FLOAT_BOUNDINGBOX)

With these two options, It build fine. Maybe we could do a better thing,
like checking if OSG was build with OSG_USE_FLOAT_BOUNDINGBOX or not, and
set the same thing for VPB. But I don't know enough CMake to do that !


Here is the modify CMakeLists.txt for VPB.


Regards.

-- 
Christophe Loustaunau.
OPTION(OSG_USE_FLOAT_BOUNDINGSPHERE "Set to ON to build VirtualPlanetBuilder 
with float BoundingSphere instead of double." ON)
MARK_AS_ADVANCED(OSG_USE_FLOAT_BOUNDINGSPHERE)
IF(NOT OSG_USE_FLOAT_BOUNDINGSPHERE)
    ADD_DEFINITIONS(-DOSG_USE_DOUBLE_BOUNDINGSPHERE)
ENDIF(NOT OSG_USE_FLOAT_BOUNDINGSPHERE)

OPTION(OSG_USE_FLOAT_BOUNDINGBOX "Set to ON to build VirtualPlanetBuilder with 
float BoundingBox instead of double." ON)
MARK_AS_ADVANCED(OSG_USE_FLOAT_BOUNDINGBOX)
IF(NOT OSG_USE_FLOAT_BOUNDINGBOX)
    ADD_DEFINITIONS(-DOSG_USE_DOUBLE_BOUNDINGBOX)
ENDIF(NOT OSG_USE_FLOAT_BOUNDINGBOX)

IF   (DYNAMIC_VIRTUALPLANETBUILDER)
    ADD_DEFINITIONS(-DVPB_LIBRARY)
ELSE (DYNAMIC_VIRTUALPLANETBUILDER)
    ADD_DEFINITIONS(-DVPB_LIBRARY_STATIC)
ENDIF(DYNAMIC_VIRTUALPLANETBUILDER)
SET(LIB_NAME vpb)

SET(HEADER_PATH ${VIRTUALPLANETBUILDER_SOURCE_DIR}/include/${LIB_NAME})
SET(LIB_PUBLIC_HEADERS
    ${HEADER_PATH}/BlockOperation
    ${HEADER_PATH}/BuildLog
    ${HEADER_PATH}/BuildOperation
    ${HEADER_PATH}/BuildOptions
    ${HEADER_PATH}/Commandline
    ${HEADER_PATH}/DatabaseBuilder
    ${HEADER_PATH}/DataSet
    ${HEADER_PATH}/Date
    ${HEADER_PATH}/Destination
    ${HEADER_PATH}/Export
    ${HEADER_PATH}/ExtrudeVisitor
    ${HEADER_PATH}/FileCache
    ${HEADER_PATH}/FileDetails
    ${HEADER_PATH}/FileUtils
    ${HEADER_PATH}/GeospatialDataset
    ${HEADER_PATH}/HeightFieldMapper
    ${HEADER_PATH}/MachinePool
    ${HEADER_PATH}/ObjectPlacer
    ${HEADER_PATH}/PropertyFile
    ${HEADER_PATH}/Serializer
    ${HEADER_PATH}/ShapeFilePlacer
    ${HEADER_PATH}/Source
    ${HEADER_PATH}/SourceData
    ${HEADER_PATH}/SpatialProperties
    ${HEADER_PATH}/System
    ${HEADER_PATH}/Task
    ${HEADER_PATH}/TaskManager
    ${HEADER_PATH}/ThreadPool
    ${HEADER_PATH}/Version
)

ADD_LIBRARY(${LIB_NAME}
    ${VIRTUALPLANETBUILDER_USER_DEFINED_DYNAMIC_OR_STATIC}
    ${LIB_PUBLIC_HEADERS}
    BuildLog.cpp
    BuildOperation.cpp
    BuildOptions.cpp
    BuildOptionsIO.cpp
    Commandline.cpp
    DatabaseBuilder.cpp
    DatabaseBuilderIO.cpp
    DataSet.cpp
    Date.cpp
    Destination.cpp
    ExtrudeVisitor.cpp
    FileCache.cpp
    FileDetails.cpp
    FileUtils.cpp
    GeospatialDataset.cpp
    HeightFieldMapper.cpp
    MachinePool.cpp
    ObjectPlacer.cpp
    PropertyFile.cpp
    ShapeFilePlacer.cpp
    Source.cpp
    SourceData.cpp
    SpatialProperties.cpp
    System.cpp
    Task.cpp
    TaskManager.cpp
    ThreadPool.cpp
    Version.cpp
)

INCLUDE_DIRECTORIES( ${GDAL_INCLUDE_DIR} ${OSG_INCLUDE_DIR} )

IF (WIN32)
  LINK_EXTERNAL(${LIB_NAME}  ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIBRARY} 
${GDAL_LIBRARY} Ws2_32.lib)
ELSE(WIN32)
  LINK_EXTERNAL(${LIB_NAME}  ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIBRARY} 
${GDAL_LIBRARY})
ENDIF(WIN32)

LINK_WITH_VARIABLES(${LIB_NAME} OSG_LIBRARY OSGUTIL_LIBRARY OSGSIM_LIBRARY 
OSGTERRAIN_LIBRARY OSGDB_LIBRARY OSGFX_LIBRARY OSGVIEWER_LIBRARY 
OSGTEXT_LIBRARY OSGGA_LIBRARY OPENTHREADS_LIBRARY)
LINK_CORELIB_DEFAULT(${LIB_NAME} ${CMAKE_THREAD_LIBS_INIT} ${MATH_LIBRARY} )

INCLUDE(ModuleInstall OPTIONAL)
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to