osg解析系列-将osg源码分割成osgCore+osgPlugins独立的两部分,osgPlugins可以独立编译,其整合文件见下方链接

本文介绍了如何将osg源码中的osgCore和osgPlugins模块进行分离,以便独立编译,并详细说明了目录结构、命令行操作以及CMakeLists.txt中关于编译设置的部分,包括安装路径和构建后缀设定。
摘要由CSDN通过智能技术生成

将osg源码分割成osgCore+osgPlugins独立的两部分,osgPlugins可以独立编译,其整合文件及命令行:
1.目录组织结构如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.命令行:
生成工程: 在这里插入图片描述
编译:
在这里插入图片描述
3.整合文件(CMakeLists.txt):

################################################################################
# Installation stuff

SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "add a postfix, usually d on windows")
SET(CMAKE_RELEASE_POSTFIX "" CACHE STRING "add a postfix, usually empty on windows")
SET(CMAKE_RELWITHDEBINFO_POSTFIX "rd" CACHE STRING "add a postfix, usually empty on windows")
SET(CMAKE_MINSIZEREL_POSTFIX "s" CACHE STRING "add a postfix, usually empty on windows")

# Correct any incorrect case usage in CMAKE_BUILD_TYPE
IF     (CMAKE_BUILD_TYPE MATCHES "release" OR CMAKE_BUILD_TYPE MATCHES "RELEASE")
    SET(CMAKE_BUILD_TYPE "Release")
ELSEIF (CMAKE_BUILD_TYPE MATCHES "minsizerel" OR CMAKE_BUILD_TYPE MATCHES "MINSIZEREL")
    SET(CMAKE_BUILD_TYPE "MinSizeRel")
ELSEIF (CMAKE_BUILD_TYPE MATCHES "relwithdebinfo" OR CMAKE_BUILD_TYPE MATCHES "RELWITHDEBINFO")
    SET(CMAKE_BUILD_TYPE "RelWithDebInfo")
ELSEIF (CMAKE_BUILD_TYPE MATCHES "debug" OR CMAKE_BUILD_TYPE MATCHES "DEBUG")
    SET(CMAKE_BUILD_TYPE "Debug")
ENDIF()

# Set the build postfix extension according to what configuration is being built.
IF (CMAKE_BUILD_TYPE MATCHES "Release")
    SET(CMAKE_BUILD_POSTFIX "${CMAKE_RELEASE_POSTFIX}")
ELSEIF (CMAKE_BUILD_TYPE MATCHES "MinSizeRel")
    SET(CMAKE_BUILD_POSTFIX "${CMAKE_MINSIZEREL_POSTFIX}")
ELSEIF(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
    SET(CMAKE_BUILD_POSTFIX "${CMAKE_RELWITHDEBINFO_POSTFIX}")
ELSEIF(CMAKE_BUILD_TYPE MATCHES "Debug")
    SET(CMAKE_BUILD_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
ELSE()
    SET(CMAKE_BUILD_POSTFIX "")
ENDIF()

# Set OSG_INSTALL_LIBDIR to specify the installation directories of object code libraries
IF(DEFINED LIB_POSTFIX)
  # Use LIB_POSTFIX if defined
  SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX})
ELSE()
  IF(CMAKE_VERSION VERSION_LESS "2.8.5")
    IF(UNIX AND NOT WIN32 AND NOT APPLE)
      IF(CMAKE_SIZEOF_VOID_P MATCHES "8")
        SET(LIB_POSTFIX "64" CACHE STRING "suffix for 32/64 dir placement")
        MARK_AS_ADVANCED(LIB_POSTFIX)
      ENDIF()
    ENDIF()
    IF(NOT DEFINED LIB_POSTFIX)
      SET(LIB_POSTFIX "")
    ENDIF()
    SET(OSG_INSTALL_LIBDIR lib${LIB_POSTFIX})
  ELSE()
    # Use the GNU standard installation directories for CMake >= 2.8.5
    INCLUDE(GNUInstallDirs)
    SET(OSG_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR})
  ENDIF()
ENDIF()
IF(NOT DEFINED LIB_POSTFIX)
    SET(LIB_POSTFIX "")
ENDIF()

# Here we apparently do some funky stuff with making the bin/ and lib/
# folders which is probably needed to work around a very old CMake bug?

#plugins version
set(osgcore_version c3.6.5)
set(osgplugins_version ${osgcore_version}.p1)
set(osgplugins_builddir osgplugins-${osgplugins_version})
set(project_user_outputdir D:/osg365vs2015x64/osgPlugins/${osgplugins_builddir})

SET(OUTPUT_BINDIR ${project_user_outputdir}/bin)
MAKE_DIRECTORY(${OUTPUT_BINDIR})
IF(MSVC AND NOT MSVC_IDE)
    MAKE_DIRECTORY(${OUTPUT_BINDIR}/${OSG_PLUGINS})
ENDIF(MSVC AND NOT MSVC_IDE)

SET(OUTPUT_LIBDIR ${project_user_outputdir}/lib)
MAKE_DIRECTORY(${OUTPUT_LIBDIR})
IF(NOT MSVC OR MSVC_IDE)
    MAKE_DIRECTORY(${OUTPUT_LIBDIR}/${OSG_PLUGINS})
ENDIF(NOT MSVC OR MSVC_IDE)

SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR})
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_BINDIR})
IF(WIN32)
    SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_BINDIR})
ELSE(WIN32)
    SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR})
ENDIF(WIN32)

################################################################################
#macro
#
macro(SETUP_PLUGIN plugin_name) 
set(target_targetname ${plugin_name})
add_library(${target_targetname} MODULE ${TARGET_SRC}  ${TARGET_H})
endmacro(SETUP_PLUGIN)

# Macro used for adding plugins below. By default, all plugins are built
macro(ADD_PLUGIN_DIRECTORY DIRECTORY)
ADD_SUBDIRECTORY("${osgplugins_source_dir}/${DIRECTORY}")
endmacro()

################################################################################
#current project
#
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
project(osgplugins)

# osgplugins source directory
set(osgplugins_source_dir "../src/osgPlugins")

#osgcore
include_directories(osgcore/include)
link_directories(osgcore/lib)

set( osgcorelibs
		OpenThreads_d.lib
		osg_d.lib 
		osgDB_d.lib 
		osgFX_d.lib 
		osgGA_d.lib 
		osgUtil_d.lib 
		osgSim_d.lib
)
FOREACH(var ${osgcorelibs})
    link_libraries(${var})
ENDFOREACH()

#another format
#link_libraries(osg_d.lib osgDB_d.lib osgFX_d.lib osgGA_d.lib osgUtil_d.lib osgSim_d.lib)


############################################################
#
#  NodeKit/Psudo loader plugins
#
ADD_PLUGIN_DIRECTORY(osga)
ADD_PLUGIN_DIRECTORY(rot)
ADD_PLUGIN_DIRECTORY(scale)

#其他的插件可以自己加,例如:ADD_PLUGIN_DIRECTORY(要加入的插件目标名称)

链接

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值