上一篇文章我提到了使用vcpkg安装osgearth不是最新版的问题,要等待作者修复或者试着拉取github上vcpkg3.5相关的提交
指路
关于使用vcpkg下载osgearth遇到的问题-CSDN博客
[osgearth] Update to 3.5 by LilyWangLL · Pull Request #34992 · microsoft/vcpkg (github.com)
这里不再过多讲述,本篇记录一下我自己构建osgearth3.5的过程:
参考osgearth官方仓库给出的文档osgearth/docs/source/build.md at master · gwaldron/osgearth (github.com)
1 - 配置 vcpkg
从GitHub克隆仓库,再打开命令行打开vcpkg目录,执行bootstrap-vcpkg.bat,生成vcpkg.exe,然后将该目录配置到环境变量
更多问题参考vcpkg中文文档:
vcpkg/README_zh_CN.md at master · microsoft/vcpkg (github.com)
2 -(可选)配置osg_OPENGL_PROFILE三元组变量
参考官方文档:如果需要,可以将 OSG 配置为在 GL3 或 GLCORE 模式下构建。某些平台(如 OSX 或 VMWare)需要 GLCORE 构建。
vcpkg 的最新版本(截至 2023 年 6 月 6 日)将默认使用 OPENGL_PROFILE=GL2 构建 OSG。这对于运行许多osgEarth应用程序来说已经足够了,但是如果您遇到新功能的问题,请尝试GL3或GLCORE版本。
在 path\to\vcpkg\triplets\x64-windows.cmake 中打开现有的 x64-windows.cmake 三元组文件,并将此行添加到文件末尾。
set(osg_OPENGL_PROFILE GL3)
这将构建具有现代 OpenGL 功能的 osg,并删除固定函数管道。
如果您希望使用不同的OPENGL_PROFILE(例如 GLCORE)构建 OSG,您可以像这样将osg_OPENGL_PROFILE设置为 GLCORE
set(osg_OPENGL_PROFILE GLCORE)
使用具有此变量集的 vcpkg 安装 osg 时,它将针对 <GL/glcorearb.h> 标头而不是通常的 <GL/gl.h> 标头构建 osg。
3 - 克隆存储库
从 GitHub 拉取源代码,并为创建一个文件夹build来构建osgearth,build建议放在源码外部
git clone --recurse-submodules https://github.com/gwaldron/osgearth.git osgearth
mkdir build
PS:建议不要从release下载,因为源码作者一直在更新,而release下载的osgearth3.5源码还是23年提交的,从源码构建能获取最新版本!也不容易出现bug(我使用release版本构建出了很多问题)
4 - 配置 CMake
vcpkg 提供了一个 CMake 工具链文件,可帮助 osgEarth 找到其所有依赖项,具体怎么用在上一篇中有讲,开头指路跳转。
注意:需要根据自己项目的构建配置(Release、RelWIthDebInfo、Debug)指定不同的构建目录,并使用这是因为osgEarth的某些依赖项不会在不指定构建类型的情况下同时选择调试和发布版本。
下面是配置cmake的命令行命令
cmake -S osgearth -B build -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=Debug -DWIN32_USE_MP=ON -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_TOOLCHAIN_FILE=E:\vcpkg\scripts\buildsystems\vcpkg.cmake
-S 后面跟着源码目录,-B后面是构建目录,-G后面是自己的VS版本(根据自己的环境配置)
-DCMAKE_BUILD_TYPE=Debug,表示使用Debug构建,根据想要构建的版本可以变化为Release或RelWIthDebInfo
-DCMAKE_INSTALL_PREFIX=./install ./install放着构建后的成果
DCMAKE_TOOLCHAIN_FILE=E:\vcpkg\scripts\buildsystems\vcpkg.cmake 其中E:\vcpkg这个是vcpkg的安装目录。
如果执行结果出错,考虑一下文件目录结构对没对
osgearthbuild(随便什么名字的根目录,在该目录下克隆仓库)
build (构建目录)
osgearth(克隆下来的仓库)
如果之前执行过cmake命令,建议删除 build (构建目录)再重新新建一个。
ps:我是先安装vcpkg执行vcpkg install osgearth:x64-windows安装了osgearth3.4和所有依赖库。
如果是使用了上篇清单模式安装,请先执行vcpkg list 确定有没有安装所有依赖库
5 - 构建并安装 osgEarth
可以使用 CMake 在命令行上构建和安装 osgEarth,也可以打开 Visual Studio 解决方案并从那里构建它。注意--config 后面跟你想要构建的版本,这里我使用的是Debug
cmake --build build --target INSTALL --config Debug
如果和我一样使用Debug构建遇到这个问题error C1128: 节数超过对象文件格式限制: 请 使用 /bigobj 进行
那么打开克隆的仓库目录,找到CMakeLists.txt打开,添加一行add_compile_options(-bigobj)
回到第四步,更新配置后再次运行
6 - 构建完成
按照上面的步骤走完,就能在根目录下就能看见一个install文件,里面是构建出来的最新osgearth库
这是这次编译出来的库: