惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
博客园_首页
博客园 - 【当耐特】
量子位
S
SegmentFault 最新的问题
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
Y
Y Combinator Blog
博客园 - 聂微东
The Cloudflare Blog
小众软件
小众软件
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
H
Help Net Security
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享

博客园 - 3D入魔

make编译时fatal error: codecvt: No such file or directory解决方法 c++ 输入文件流ifstream用法详解[转] Ubuntu下,已经编译了OSG,如何增加OsgFbx插件,支持读取.fbx格式文件[转] vscode一键配置C/C++多个C及CPP文件编译与tasks.json和launch.json原理【转】 ecvt()、strtod()、strtoul() sscanf,sscanf_s及其相关用法[转] 新手填坑--国产统信UOS操作系统上编译OpenScenGraph(OSG)3.4(附编译成果.so)2023年1月 GPL、BSD、MIT、Mozilla、Apache 和 LGPL 六种开源协议选择 一图解决 nodejs express multer 中文名乱码【转】 Cesium加载离线地图和离线地形【转】 WebXR 技术调研 - 在浏览器中构建扩展现实(XR)应用【转】 Cesium+vue 制作风流场【转】 pkg 打包node服务端 填坑记录!! 实景三维电子沙盘 Cesium建筑自定义光源效果[转] 数字孪生城市 三维数字沙盘+GIS = F3DGIS 实战!使用pano2vr生成html5全景页面【转】 Cesium 使用MediaStreamRecorder 或者MediaRecorder录屏并下载视频,以及开启摄像头录像。【转】
OSG3.4.0静态库编译(VS2019)
3D入魔 · 2023-02-27 · via 博客园 - 3D入魔

前言:

20232月底工作需要使用osg3.4.0的静态库,搜了网上所有资料发现要么是osg以前版本的静态库编译,要么就是新版本的动态库编译,osg3.0以后静态库编译都没有,现在自己搞过去了,把经验和成果文件都无偿分享给大家啦,饮水思源,和衷共济。

 osg静态库编译成果用百度网盘直接下载:

链接:https://pan.baidu.com/s/1vKAyerNSgiMLJHpjePn2Cw

提取码:1234

3rdPary成果

链接:https://pan.baidu.com/s/18y-WyLEKbmQBauzx9QHhbg
提取码:1234

第一步:使用vcpkg下载并编译osg3.4

说明:这里说一下为什么推荐用vcpkg工具下载编译,以前都是自己下载osg第三方依赖库的源代码(osg2.8,osg3.0,每次下载编译都非常痛苦,依赖项特别多,而且有些第三方库还依赖其它库,把这里都理顺编译成静态库基本都要1周左右时间了,而用vcpkg工具我只用了1天就下载并且vcpkg帮我们编译完成了静态库。我数了一下,下载了70多个库,如果我们人工一个个去下载编译,工作量想想都让人抓狂!!!!所以借用vcpkg工具让它自己去搜索下载编译其依赖库十分nice,在这里十分感谢vcpkg工具的提供者,工具改变了一切!!!

 

具体的过程参看下面的说明:

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

尝试用windows提供的pkg工具安装osg3.4.0静态库

vcpkg.exe安装与应用

https://www.cnblogs.com/gispathfinder/p/12221680.html

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

vcpkg安装指定版本的库

https://blog.csdn.net/lhkjm/article/details/127596110

osg3.4.0 .tar.gz文件的哈希码:

050424175b671ef23f3d1c1f59c7b5880ea4b8e225ca39e9698f002069af1d07c97472c1bccf5aaf0309faa344a42765292bc0c4af61df94c04480d447fbaff4

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

vcpkg安装静态库/mtd/mt

https://blog.csdn.net/what951006/article/details/115360430

搜索软件包下载输入:

vcpkg search 包名

例如,让我们搜索spdlog:

vcpkg search spdlog

想为我们想要的平台下载静态库。在本例中,我们将下载x64 Windows平台的spdlog

为此输入:(vcpkg解压目录下)

.\vcpkg install spdlog:x64-windows-static

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

结合以上

 

 修改下面两个文件

  

portfile.cmake文件中修改OSG版本号为3.4.0,osg3.4.0 .tar.gz文件的SHA512改为

050424175b671ef23f3d1c1f59c7b5880ea4b8e225ca39e9698f002069af1d07c97472c1bccf5aaf0309faa344a42765292bc0c4af61df94c04480d447fbaff4

  

vcpkg.json中修改version值为3.4.0

 

 .\vcpkg install osg:x64-windows-static

vcpkg下载所有的包都成功了,编译静态库-失败!!!! 不用着急,只要有了第三方库,我们可以人工编译osg3.4.0!!!

Installing 1/1 osg:x64-windows-static...

Building osg[core,default-features,fontconfig,freetype,nvtt,openexr,plugins]:x64-windows-static...

-- Using cached openscenegraph-OpenSceneGraph-OpenSceneGraph-3.4.0.tar.gz.

-- Extracting source D:/OSG/vcpkg-master/downloads/openscenegraph-OpenSceneGraph-OpenSceneGraph-3.4.0.tar.gz

-- Applying patch link-libraries.patch

CMake Error at scripts/cmake/z_vcpkg_apply_patches.cmake:34 (message):

  Applying patch failed: Checking patch CMakeModules/OsgMacroUtils.cmake...

  error: while searching for:

  MACRO(LINK_WITH_VARIABLES TRGTNAME)

      FOREACH(varname ${ARGN})

          IF(${varname}_DEBUG)

              IF(${varname}_RELEASE)

                  TARGET_LINK_LIBRARIES(${TRGTNAME} optimized "${${varname}_RELEASE}" debug "${${varname}_DEBUG}")

  error: patch failed: CMakeModules/OsgMacroUtils.cmake:37

  error: CMakeModules/OsgMacroUtils.cmake: patch does not apply

Call Stack (most recent call first):

  scripts/cmake/vcpkg_extract_source_archive.cmake:153 (z_vcpkg_apply_patches)

  scripts/cmake/vcpkg_extract_source_archive_ex.cmake:8 (vcpkg_extract_source_archive)

  scripts/cmake/vcpkg_from_github.cmake:113 (vcpkg_extract_source_archive_ex)

  ports/osg/portfile.cmake:3 (vcpkg_from_github)

  scripts/ports.cmake:147 (include)

error: building osg:x64-windows-static failed with: BUILD_FAILED

error: Please ensure you're using the latest port files with `git pull` and `vcpkg update`.

Then check for known issues at:

    https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+osg

You can submit a new issue at:

    https://github.com/microsoft/vcpkg/issues/new?template=report-package-build-failure.md&title=[osg]+Build+error

Include '[osg] Build error' in your bug report title, the following version information in your bug description, and attach any relevant failure logs from above.

    vcpkg-tool version: 2023-01-24-8a88d63f241d391772fbde69af9cab96c3c64c75

    vcpkg-scripts version: unknown

第二步:cmake生成osg3.4vs2019工程

CMake可视化工具生成osg3.4 Vs2019的工程,这里没有什么难点,注意设置将动态编译选项去除即可。

osg3.4静态编译目录(我定义的是OSG_STATIC目录)下创建binincludelib几个目录,然后根据自己的需要从vcpkgpackages目录中将编译好的库的相应文件拷贝到对应的目录中,方便cmake中指定3rdParty目录。

 

 

 

 

 

 

 

 

先点configure按钮,没有问题以后用Generate按钮生成vs2019的工程。

第三步:编译osg3.4静态库

vs2019打开cmake生成的sln文件,先运行All_Build

  

再运行INSTALL,就可以在我们上面在cmake中设置的install路径下看到生成的osglib了,我设置的路径是d:\OpenSceneGraph_Static,会生成binincludelib三个目录

  

Lib中的名称都有osg130-,用的时候可以全部去除。

检查一下是否正确,可用其生成的osgstaticviewer.exe程序验证。其路径位置为

 osg数据文件cow.osg文件用鼠标拖入osgstaticviewer.exe,显示出牛。-----ok

 

 osg静态库编译成果用百度网盘直接下载:

链接:https://pan.baidu.com/s/1vKAyerNSgiMLJHpjePn2Cw

提取码:1234

3rdPary成果

链接:https://pan.baidu.com/s/18y-WyLEKbmQBauzx9QHhbg 
提取码:1234

遇到的问题

在编译osgstaticviewer.exe时,一开始没有通过,提示了一堆LNK2001错误

 后来发现是link里的库不全导致的,看来cmake也不能是完美的,手动加上缺少的库,即可编译通过!!!

 D:\OSG_STATIC\3rdParty\x64\lib\freetype.lib

D:\OSG_STATIC\3rdParty\x64\lib\libpng16.lib
D:\OSG_STATIC\3rdParty\x64\lib\brotlidec-static.lib
D:\OSG_STATIC\3rdParty\x64\lib\brotlicommon-static.lib
D:\OSG_STATIC\3rdParty\x64\lib\brotlienc-static.lib
D:\OSG_STATIC\3rdParty\x64\lib\bz2.lib