win10 + vs2017 + cmake3.17编译OSG-3.4.1

里面有很多bug,自己已经跑通了。本博客仅作为自己笔记,写的不是很规范,仅供大家参考。

参考教程:https://blog.csdn.net/bailang_zhizun/article/details/120992244

注意事项:

1. 不勾选BUILD_OSG_EXAMPLE、BUILD_MFC_EXAMPLE。

        CMakeLists.txt可以正常build这些例子,但是没配置去install这些例子。

勾选了这两个选项后,VS2017会默认要INSTALL这些example,而CMake没有配置install这些example的指令,因此会导致失败。

        如果想build相关的example,可以等Install过程完成之后,再重新配置,专门build相关的example.

2. 在配置CMAKE时,CMAKE_BUILD_TYPE默认是只有Release,需要把Debug也加上。

3. CMake-gui罗列出了许多依赖库,可以从别人打包的依赖库里找(参考:),也可以自己重新编译(参考:GitHub - bjornblissing/osg-3rdparty-cmake: CMake scripts for building OpenSceneGraph third party libraries.)。如果有的依赖库,别人的打包库里没有,自己也没编译,可以将对应的信息清空,避免出现不必要的错误。

4. 如果有其他bug可参考下面的参考教程。

 

1. 下载与解压 

2. 修改configure

1)Ungrouped Entries -- 》ACTUAL_3RDPARTY_DIR:

         设置为: D:/Depend_3rd_party/OSG341/3rdParty

2) Ungrouped Entries--》SDL_INCLUDE_DIR:

        设置为: D:/Depend_3rd_party/SDL2/install/include/SDL2  (自己编译的)

3)Ungrouped Entries--》SDL2MAIN_LIBRARY:

        设置为:D:/Depend_3rd_party/SDL2/install/lib/SDL2main.lib  (自己编译的)

4)Ungrouped Entries--》SDLMAIN_LIBRARY:

        设置为:D:/Depend_3rd_party/SDL2/install/lib/SDL2main.lib   (自己编译的)

5)BUILD-->BUILD_OSG_EXAMPLES

        设置为:

6)CMAKE-->CMAKE_CONFIGURATION_TYPES

        设置为:Debug;Release

7)CMAKE --> CMAKE_INSTALL_PREFIX:(重要)

        设置为:D:/Depend_3rd_party/OSG341/install (自己创建的文件夹)

8)FREETYPE(不配置也可以)

9)GDAL(不配置也可以)

10)SDL2

3. Configure:

4. 再次更新Ungrouped Entries:

        1) BUILD_MFC_EXAMPLES  打钩(切记!!!VS2017一定要安装MFC开发组件!!!)

        2) SDL2_LIBRARY 设置为(不更新也可以)

D:/Depend_3rd_party/SDL2/install/lib/SDL2main.lib;D:/Depend_3rd_party/SDL2/install/lib/SDL2.lib;D:/Depend_3rd_party/SDL2/install/lib/SDL2d.lib;D:/Depend_3rd_party/SDL2/install/lib/SDL2maind.lib 

 5. 再次Configure:

6. Generate:

 

7. Open Project:

 选择release模式;右键ALL_BUILD-->生成, 漫长的等待,约1.5小时。

8. 报错:

1)nvtt.lib (CompressionOptions.obj) : error LNK2001: 无法解析的外部符号"int __cdecl nvAbort:"---尚未解决

错误定位:当生成Plugins nvtt 这个插件时报错。

可能原因1: nvtt.lib的编译格式不对,重新下载nvtt源代码,重新编译

执行结果:不work.

可能原因2:将nvtt的lib库手动添加到Plugins nvtt项目的链接库中

修改过程:https://www.cnblogs.com/hik-wxy/p/14715116.html

修改结果:不work。

具体细节如下:

        1) 右键对应项目→属性→VC++目录→库目录

        2) 右键对应项目→属性→链接器→输入→附加依赖项 

填充内容为: 

nvtt.lib
nvtt_d.lib
nvcore.lib
nvcore_d.lib
nvimage.lib
nvimage_d.lib
nvmath.lib
nvmath_d.lib
nvthread.lib
nvthread_d.lib
squish.lib
squish_d.lib
bc7.lib
bc7_d.lib
bc6h.lib
bc6h_d.lib

最终解决方案:

以上两种方法都不work。因为这个项目是一个插件,用于NVIDIA显卡支持osg显示,不是特别重要,所以在再一次的编译过程中,在cmake-gui界面上,删除了NVTT的配置信息,这样,在编译的时候就不编译这个插件了。

参考教程:

[1] windows10 下OSG+VS2017环境搭建-CSDN博客

[2]  OSG环境部署 OSG3.6.5+vs2017+win10_x64(超详细)

[3] Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值