• 一、osg编译


    目录

    一、前言

    二、安装步骤

    三、配置osg环境的两种方式

    四、使用vs构建工程

    五、使用cmake进行工程构建


    一、前言

    我编译成功的版本是使用了window10、window11 vs2019 ,三方dll是下载的2017full版本的。但是我在vs2017 同样的三方dll,编译确实一堆报错。如下:

    LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\osgUtil.lib”
    已完成生成项目“osgDB.vcxproj”的操作 - 失败。

     这样子的语句。很大程度是要编译失败了。在window11+vs2017上没有编译成功。

    使用的三方dll来之官网下载。(备注vs2019是 v141,就很离谱,2017编译不成功,19反而可以)

     编译正常的界面大体是这样的。能够看到输出正常的dll

     总结:

    window10\window11+vs2019+3rdParty_VS2017_v141_x64_V11_full 能够编译成功。

    二、安装步骤

    1、代码和第三方库准备 

    代码

    GitHub - openscenegraph/OpenSceneGraph at OpenSceneGraph-3.6.5

    官方数据

    Data Resources (openscenegraph.com)

    第三方dll

    Dependencies (openscenegraph.com)

    2、使用cmake将代码构建成vs工程

    配置之后会使用到我们所下载的三方dll,这会按两次configure

    第一次:根据vs版本进行配置,然后界面会爆红,因为找不到三方库

    第二次:选择好三分库之后,在点一次config,cmake会自己去给相应的模块找对应的三方库目录

    (备注:三方库里边的dll是不全的,涉及其他插件,需要自己去下对应的库,设置进去编译。)

    3、点击generate,生成解决方案。

    如果example没有勾选,这里是不会用demo的

    4、点击批生成---批生成--按下图设置进行编译,按生成后开始编译,

    5、接下来就是安安静静等待编译。

     6、在编译install,这个步骤就类型cmake 里边的cmake install 一样,把编译成功的文件,复制一遍到设置的输出目录中。

     生成成功

    7、bulid出来的解决方案下 bin,lib,src和include也复制到生成目录,把官方数据data也放进来。然后配置环境变量。

     8、设置环境变量

     测试一下,随便执行一个程序:

     到这一步,则按照完成。

    三、配置osg环境的两种方式

    1、使用绝对路径进行配置

      工具->选项->项目解决方案->VC++目录,分别设置OSG的头文件及库文件

    包含文件里添加:F:\...\OSG\include

    库文件添加:F:\...\OSG\lib

    2、使用环境变量进行配置

       方法一有个问题是我们把引用的目录和lib设置成绝对路径了,这样如果你的测试demo发到别人电脑,别人电脑上OSG的目录和工程里设置的目录不一样,工程就会找这个目录而报错,我觉得OSG设置成环境变量最好,这样比人用你的Demo时只要按着你的环境变量设置就行了。

    我们在系统环境变量中添加新变量OSG_SDK

    备注:以下步骤参考之:OSG+VS2015 测试Demo - 爱码网 (likecs.com)

     

    3、以下步骤是上边两个操作任选一之后都要做的

     链接器–>输入–>附加依赖项,添加.lib文件的依赖项如下:

    1. OpenThreadsd.lib
    2. osgd.lib
    3. osgDBd.lib
    4. osgUtild.lib
    5. osgGAd.lib
    6. osgViewerd.lib
    7. osgTextd.lib

     如果是release版本,则lib后边不需要带一个d字母即可。

    四、使用vs构建工程

    1. #include
    2. #include
    3. #include
    4. int main()
    5. {
    6. osgViewer::Viewer view;
    7. view.setSceneData(osgDB::readNodeFile("cow.osg"));
    8. return view.run();
    9. }

     运行如下:

    五、使用cmake进行工程构建

    1、cmakelists写法

    备注:find_package一定要写用到的模块,不然target_link_libraries 链接不到。

    1. # CMakeList.txt: osgtest 的 CMake 项目,在此处包括源代码并定义
    2. # 项目特定的逻辑。
    3. #
    4. cmake_minimum_required (VERSION 3.8)
    5. find_package(OpenSceneGraph REQUIRED osgDB osgViewer)
    6. include_directories(${OPENSCENEGRAPH_INCLUDE_DIR})
    7. # 将源代码添加到此项目的可执行文件。
    8. add_executable (osgtest "osgtest.cpp" "osgtest.h")
    9. target_link_libraries(${PROJECT_NAME} ${OPENSCENEGRAPH_LIBRARIES})
    10. ##
    11. ## Miscellaneous Microsoft Visual Studio settings
    12. ##
    13. if (MSVC)
    14. # Set the startup project .
    15. if (NOT ${CMAKE_VERSION} VERSION_LESS "3.6.0")
    16. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
    17. endif ()
    18. endif (MSVC)
    19. # TODO: 如有需要,请添加测试并安装目标。

    2、编写demo

    1. #include
    2. #include
    3. int main(int argc, char** argv)
    4. {
    5. osgViewer::Viewer viewer;
    6. viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
    7. return viewer.run();
    8. }

    如图:

  • 相关阅读:
    c语言 交换函数
    crash工具分析dma设备内存踩踏(二)
    比特币 ZK 赏金系列:第 1 部分——支付解密密钥
    【第0天】SQL快速入门-安装MYSQL环境(SQL 小虚竹)
    类和对象(6):const成员,&/const &重载
    Linux入门
    Vue计算属性computed和监听watch
    Cell|易基因微量DNA甲基化测序助力中国科学家成功构建胚胎干细胞嵌合体猴,登上《细胞》封面
    SAP ABAP 定义事件以及处理事件
    [附源码]java毕业设计农产品网络销售系统
  • 原文地址:https://blog.csdn.net/cangqiongxiaoye/article/details/126355300