This is my FindOSG file I use for getting dll to copy , it get the version also... see
   #get version numbers
EXEC_PROGRAM(${OSG_VERSION_APP} ARGS --version-number OUTPUT_VARIABLE OSG_VERSION_NUMBER) EXEC_PROGRAM(${OSG_VERSION_APP} ARGS --so-number OUTPUT_VARIABLE OSG_SO_NUMBER) EXEC_PROGRAM(${OSG_VERSION_APP} ARGS --openthreads-soversion-number OUTPUT_VARIABLE OSG_OT_SO_NUMBER)

I agree the FindOSG should be distributed along OSG.
My version need to find .dll under windows to copy them into a packaged distribution (Firefox plugin)
I use it under Windows and Linux not tested on Mac

Hope it helps

Luigi


Jason Beverage ha scritto:
Thanks Art and JS, I'll take a look at osgPPU and see what I can come up with.

Jason

On Thu, Jan 29, 2009 at 10:28 AM, Jean-Sébastien Guay <jean-sebastien.g...@cm-labs.com <mailto:jean-sebastien.g...@cm-labs.com>> wrote:

    Hi Jason,


        We've had a couple of requests on osgEarth to install our
        osgDB plugins directly to the osgPlugins-VERSION directory.
         Is there a way in CMake that I can determine what that
        directory would be?


    I think Art does something for this in his CMake files for
    osgPPU... You could grab osgPPU and see.

    It would be nice to have a generalized FindOSG.cmake file that
    would be distributed with OSG and which any nodekits / projects
    would use to get this for free. Or maybe this already exists?

    J-S
-- ______________________________________________________
    Jean-Sebastien Guay    jean-sebastien.g...@cm-labs.com
    <mailto:jean-sebastien.g...@cm-labs.com>
                                  http://www.cm-labs.com/
                           http://whitestar02.webhop.org/

    _______________________________________________
    osg-users mailing list
    osg-users@lists.openscenegraph.org
    <mailto:osg-users@lists.openscenegraph.org>
    http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


------------------------------------------------------------------------

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

# Locate gdal
# This module defines
# OSG_LIBRARY
# OSG_FOUND, if false, do not try to link to gdal 
# OSG_INCLUDE_DIR, where to find the headers
#
# $OSG_DIR is an environment variable that would
# correspond to the ./configure --prefix=$OSG_DIR
#
# Created by Robert Osfield. 

FIND_PATH(OSG_INCLUDE_DIR osg/Node
    ${OSG_DIR}/include
    $ENV{OSG_DIR}/include
    $ENV{OSG_DIR}
    $ENV{OSGDIR}/include
    $ENV{OSGDIR}
    $ENV{OSG_ROOT}/include
    ~/Library/Frameworks
    /Library/Frameworks
    /usr/local/include
    /usr/include
    /sw/include # Fink
    /opt/local/include # DarwinPorts
    /opt/csw/include # Blastwave
    /opt/include
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ 
Manager\\Environment;OSG_ROOT]/include
    /usr/freeware/include
)

FIND_PROGRAM(OSG_VERSION_APP
                                NAMES osgversion osgversiond
        PATHS
        ${OSG_DIR}/bin
        $ENV{OSG_DIR}/bin
        $ENV{OSG_DIR}
        $ENV{OSG_ROOT}/lib
        ~/Library/Frameworks
        /Library/Frameworks
        /usr/local/lib
        /usr/lib
        /sw/lib
        /opt/local/lib
        /opt/csw/lib
        /opt/lib
        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ 
Manager\\Environment;OSG_ROOT]/lib
        /usr/freeware/lib64
)
IF(OSG_VERSION_APP)
        #define binary folder
        IF(WIN32)
                GET_FILENAME_COMPONENT(OSG_BINARY_DIR ${OSG_VERSION_APP} PATH)
        ELSE(WIN32)
                GET_FILENAME_COMPONENT(tmp ${OSG_VERSION_APP} PATH)
                GET_FILENAME_COMPONENT(tmp ${tmp} PATH)
                SET(OSG_BINARY_DIR "${tmp}/lib")
                IF(UNIX)
                        SET(ENV{LD_LIBRARY_PATH} 
"${OSG_BINARY_DIR}:$ENV{LD_LIBRARY_PATH}")
                ENDIF(UNIX)
        ENDIF(WIN32)


        #get version numbers
        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS  --version-number OUTPUT_VARIABLE 
OSG_VERSION_NUMBER)
        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS  --so-number OUTPUT_VARIABLE 
OSG_SO_NUMBER) 
        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS  --openthreads-soversion-number 
OUTPUT_VARIABLE OSG_OT_SO_NUMBER)
        # Automatically detected build options
        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS Matrix::value_type OUTPUT_VARIABLE 
OSG_USE_FLOAT_MATRIX)
        IF(OSG_USE_FLOAT_MATRIX MATCHES "float")
                LIST(APPEND OSG_DEFINITIONS -DOSG_USE_FLOAT_MATRIX)
        ENDIF(OSG_USE_FLOAT_MATRIX MATCHES "float")

        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS Plane::value_type OUTPUT_VARIABLE 
OSG_USE_FLOAT_PLANE)
        IF(OSG_USE_FLOAT_PLANE MATCHES "float")
                LIST(APPEND OSG_DEFINITIONS -DOSG_USE_FLOAT_PLANE)
        ENDIF(OSG_USE_FLOAT_PLANE MATCHES "float")

        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS BoundingSphere::value_type  
OUTPUT_VARIABLE OSG_USE_FLOAT_BOUNDINGSPHERE)
        IF(OSG_USE_FLOAT_BOUNDINGSPHERE MATCHES "double")
                LIST(APPEND OSG_DEFINITIONS -DOSG_USE_DOUBLE_BOUNDINGSPHERE)
        ENDIF(OSG_USE_FLOAT_BOUNDINGSPHERE MATCHES "double")

        EXEC_PROGRAM(${OSG_VERSION_APP} ARGS BoundingBox::value_type 
OUTPUT_VARIABLE OSG_USE_FLOAT_BOUNDINGBOX)
        IF(OSG_USE_FLOAT_BOUNDINGBOX MATCHES "double")
                LIST(APPEND OSG_DEFINITIONS -DOSG_USE_DOUBLE_BOUNDINGBOX)
        ENDIF(OSG_USE_FLOAT_BOUNDINGBOX MATCHES "double")

        MACRO(OSG_FIND_MODULE MYVAR MYNAME)
                IF(MYNAME MATCHES OpenThreads)
                        IF(WIN32)
                                SET(MYFILE 
"${OSG_BINARY_DIR}/ot${OSG_OT_SO_NUMBER}-${MYNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
                        ELSE(WIN32)
                                SET(MYFILE 
"${OSG_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}${MYNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${OSG_OT_SO_NUMBER}")
                        ENDIF(WIN32)
                ELSE(MYNAME MATCHES OpenThreads)
                        IF(WIN32)
                                SET(MYFILE 
"${OSG_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}osg${OSG_SO_NUMBER}-${MYNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
                        ELSE(WIN32)
                                SET(MYFILE 
"${OSG_BINARY_DIR}/${CMAKE_SHARED_MODULE_PREFIX}${MYNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}.${OSG_SO_NUMBER}")
                        ENDIF(WIN32)
                ENDIF(MYNAME MATCHES OpenThreads)
                #message("lloking for 
-->${MYFILE}<--${CMAKE_SHARED_MODULE_PREFIX}")
                IF(EXISTS ${MYFILE})
                        #message("found for -->${MYFILE}<--")
                        SET(${MYVAR} ${MYFILE})
                ELSE(EXISTS ${MYFILE})
                        SET(${MYVAR} "")
                ENDIF(EXISTS ${MYFILE})                 
        ENDMACRO(OSG_FIND_MODULE MYVAR MYNAME)

        MACRO(OSG_FIND_PLUGIN MYVAR MYNAME)
                SET(MYFILE 
"${OSG_BINARY_DIR}/osgPlugins-${OSG_VERSION_NUMBER}/osgdb_${MYNAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
                #message("lloking for -->${MYFILE}<--")
                IF(EXISTS ${MYFILE})
                        #message("found for -->${MYFILE}<--")
                        SET(${MYVAR} ${MYFILE})
                ELSE(EXISTS ${MYFILE})
                        SET(${MYVAR} "")
                ENDIF(EXISTS ${MYFILE})                 
        ENDMACRO(OSG_FIND_PLUGIN MYVAR MYNAME)

        MACRO(OSG_COPY_MODULE_CUSTOM_COMMAND MYNAMES MYDIR MYDEP)
                SET(mod_list "")
                foreach(MYNAME ${MYNAMES})
                        OSG_FIND_MODULE(mytmp ${MYNAME})
                        if(mytmp)
                                GET_FILENAME_COMPONENT(myfile ${mytmp} NAME)
                LIST(APPEND ${MYDEP} "${MYDIR}/${myfile}")
                add_custom_command(
                        OUTPUT "${MYDIR}/${myfile}"
                        COMMAND ${CMAKE_COMMAND} ARGS -E make_directory  
"${MYDIR}"
                        COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different 
${mytmp} "${MYDIR}/${myfile}"
                        #is unclear if the .rule are needed or not#
                        #COMMAND ${CMAKE_COMMAND} ARGS -E remove 
"${MYDIR}/${myfile}.rule"
                )
                        endif(mytmp)
                endforeach(MYNAME)
    #SET(${MYDEP} ${mod_list})                  
        ENDMACRO(OSG_COPY_MODULE_CUSTOM_COMMAND MYNAMES MYDIR MYDEP)

        MACRO(OSG_COPY_PLUGIN_CUSTOM_COMMAND MYNAMES MYDIR MYDEP)
                SET(mod_list "")
                foreach(MYNAME ${MYNAMES})
                        OSG_FIND_PLUGIN(mytmp ${MYNAME})
                        if(mytmp)
                                GET_FILENAME_COMPONENT(mytmp1 ${mytmp} NAME)
                                GET_FILENAME_COMPONENT(mytmp2 ${mytmp} PATH)
                                GET_FILENAME_COMPONENT(mytmp2 ${mytmp2} NAME)
                LIST(APPEND ${MYDEP} "${MYDIR}/${mytmp2}/${mytmp1}")
                add_custom_command(
                        OUTPUT "${MYDIR}/${mytmp2}/${mytmp1}"
                        COMMAND ${CMAKE_COMMAND} ARGS -E make_directory  
"${MYDIR}/${mytmp2}"
                        COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different 
${mytmp} "${MYDIR}/${mytmp2}/${mytmp1}"
                        #is unclear if the .rule are needed or not#
                        #COMMAND ${CMAKE_COMMAND} ARGS -E remove 
"${MYDIR}/${mytmp2}/${mytmp1}.rule"
                )
                        endif(mytmp)
                endforeach(MYNAME)
    #SET(${MYDEP} ${mod_list})                  
        ENDMACRO(OSG_COPY_PLUGIN_CUSTOM_COMMAND MYNAMES MYDIR MYDEP)
ENDIF(OSG_VERSION_APP)

        
MACRO(FIND_OSG_LIBRARY MYLIBRARY MYLIBRARYNAME)

    FIND_LIBRARY("${MYLIBRARY}_DEBUG"
        NAMES "${MYLIBRARYNAME}d"
        PATHS
        ${OSG_DIR}/lib/Debug
        ${OSG_DIR}/lib
        $ENV{OSG_DIR}/lib/debug
        $ENV{OSG_DIR}/lib
        $ENV{OSG_DIR}
        $ENV{OSGDIR}/lib
        $ENV{OSGDIR}
        $ENV{OSG_ROOT}/lib
        ~/Library/Frameworks
        /Library/Frameworks
        /usr/local/lib
        /usr/lib
        /sw/lib
        /opt/local/lib
        /opt/csw/lib
        /opt/lib
        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ 
Manager\\Environment;OSG_ROOT]/lib
        /usr/freeware/lib64
    )

    FIND_LIBRARY(${MYLIBRARY}
        NAMES ${MYLIBRARYNAME}
        PATHS
        ${OSG_DIR}/lib/Release
        ${OSG_DIR}/lib
        $ENV{OSG_DIR}/lib/Release
        $ENV{OSG_DIR}/lib
        $ENV{OSG_DIR}
        $ENV{OSGDIR}/lib
        $ENV{OSGDIR}
        $ENV{OSG_ROOT}/lib
        ~/Library/Frameworks
        /Library/Frameworks
        /usr/local/lib
        /usr/lib
        /sw/lib
        /opt/local/lib
        /opt/csw/lib
        /opt/lib
        [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ 
Manager\\Environment;OSG_ROOT]/lib
        /usr/freeware/lib64
    )
    
    IF( NOT ${MYLIBRARY}_DEBUG)
        IF(${MYLIBRARY})
                SET(${MYLIBRARY}_DEBUG ${${MYLIBRARY}})
        ENDIF(${MYLIBRARY})
    ENDIF( NOT ${MYLIBRARY}_DEBUG)
    IF( NOT ${MYLIBRARY})
        IF(${MYLIBRARY}_DEBUG)
                SET(${MYLIBRARY} ${${MYLIBRARY}_DEBUG})
        ENDIF(${MYLIBRARY}_DEBUG)
    ENDIF( NOT ${MYLIBRARY})

    MARK_AS_ADVANCED(${MYLIBRARY} "${MYLIBRARY}_DEBUG")
ENDMACRO(FIND_OSG_LIBRARY LIBRARY LIBRARYNAME)




FIND_OSG_LIBRARY(OSG_LIBRARY osg)
FIND_OSG_LIBRARY(OSGUTIL_LIBRARY osgUtil)
FIND_OSG_LIBRARY(OSGDB_LIBRARY osgDB)
FIND_OSG_LIBRARY(OSGGA_LIBRARY osgGA)
FIND_OSG_LIBRARY(OSGTEXT_LIBRARY osgText)
FIND_OSG_LIBRARY(OSGTERRAIN_LIBRARY osgTerrain)
FIND_OSG_LIBRARY(OSGFX_LIBRARY osgFX)
FIND_OSG_LIBRARY(OSGSIM_LIBRARY osgSim)
FIND_OSG_LIBRARY(OSGMANIPULATOR_LIBRARY osgManipulator)
FIND_OSG_LIBRARY(OSGVIEWER_LIBRARY osgViewer)
FIND_OSG_LIBRARY(OPENTHREADS_LIBRARY OpenThreads)

MACRO(OSG_LINK_WITH_VARIABLES TRGTNAME)
    FOREACH(varname ${ARGN})
        IF(${varname}_DEBUG)
            TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${${varname}}" debug 
"${${varname}_DEBUG}")
        ELSE(${varname}_DEBUG)
            TARGET_LINK_LIBRARIES(${TRGTNAME} "${${varname}}" )
        ENDIF(${varname}_DEBUG)
    ENDFOREACH(varname)
ENDMACRO(OSG_LINK_WITH_VARIABLES TRGTNAME)


MARK_AS_ADVANCED(OSG_BINARY_DIR OSG_INCLUDE_DIR)

SET(OSG_FOUND "NO")
IF(OSG_LIBRARY AND OSG_INCLUDE_DIR AND OSG_BINARY_DIR)
    SET(OSG_FOUND "YES")
ENDIF(OSG_LIBRARY AND OSG_INCLUDE_DIR AND OSG_BINARY_DIR)
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to