OSG3.4.0静态库编译(VS2019)

前言:

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

 

posted on 2023-02-27 17:38  3D入魔  阅读(425)  评论(0编辑  收藏  举报