CMake+VS2017编译OSGEarth(无需编译OSG)

news2025/5/14 16:37:26

本文写作于2023年8月18日,按以下步骤编译了再次,都可正常运行。

无需编译OSG,直接编译OSGEarth。

工具版本:CMake 3.27.3, VS2017(安装C++开发组件)

 一.下载OSG开发包

一般教程都会教怎么编译OSG,实际上OSG提供了开发包,不用编译。

打开OSG官网,点击下载稳定版本

 

点击Binaries链接

 下载二进制文件,注意VS版本,我这里用的VS2017。

 

在D盘新建OSB文件夹,解压下载的文件

 二.下载第三方依赖库

打开OSG官网,点击下载依赖库 

下载针对VS2017的第三库

 下载解压文件

三.下载OSGEarth2.10

请注意这里的版本为2.10,其他版本可能无法使用。  下载解压文件

 

 

四.下载安装CMake 

这里用的CMake3.27.3,为当前日期(2023-8-18)最新版,安装步骤很简单,此处略云。

五.生成OSGEARTH工程

打开CMake,将D:\OSG\osgearth-master\CMakeLists.txt拖到CMake上,修改输出文件夹为build

 配置为VS2017、x64,点击【Finish】

 

运行一会儿会报错,这是因为还没有配置依赖库

(1)配置THIRD_PARTY_DIR

 (2)配置CURL

(3)配置GDAL

 

 再次点击【Configure】,经过一段时间提示Confiring done,表示配置正确。

点击【Generatte】提示Generating done,表示生成成功。

点击【Open Project】,打开工程。 

 

六.在VS中生成OSGEARTH工程

 配置工程为x64 Releas,生成ALL_BUILD。

因为项目之间有依赖关系,可能第一次编译有一部项目编译失败,再生成一次就能全部成功了。编时间大约几十分钟。

八.整理成开发库

在D:\OSG下新建文件夹osgearth-2.10-VC2017-64-Release 创建目录include, lib, bin。

(1) 头文件复制。将目录“D:\OSG\osgearth-osgearth-2.10\src”中的所有文件复制建立的include目录中

(2) 库文件复制。将目录“D:\OSG\osgearth-osgearth-2.10\build\lib\Release”中的文件复制到建立的lib目录中。

(3) bin文件复制。 将目录“DD:\OSG\osgearth-osgearth-2.10\build\lib\Release”中的文件(主要是dll)复制到建立的bin目录中。将目录“D:\OSG\osgearth-osgearth-2.10\build\bin\Release”中的文件(主要是exe)复制到建立的bin目录中。

在bin文件下运行cmd,可以看到一个地球。 注意osgearth_viewer.exe和gdal_multiple_files.earth文件路径。

D:\OSG\osgearth-2.10-VC2017-64-Release\bin\osgearth_viewer.exe D:\OSG\osgearth-osgearth-2.10\tests\gdal_multiple_files.earth

 

九   代码测试

新建VC++控制台应用程序

将工程改为Release x64

 配置VC++目录下的包含头文件

 

 

库文件

 

输入两个lib文件夹下的链接lib文件(可以用批处理命令)

dir *.lib /b >filelist.txt 

 

 源代码

#include <Windows.h>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgEarthUtil/EarthManipulator>
#include <osgEarth/MapNode>
using namespace std;

int main()
{
	// map
	osg::Node* globe = osgDB::readNodeFile("D:\\OSG\\osgearth-osgearth-2.10\\tests\\simple.earth");
	osgEarth::MapNode* mapNode = osgEarth::MapNode::get(globe);

	// viewer
	osgViewer::Viewer viewer;
	viewer.setSceneData(mapNode);

	// manipulator
	osg::ref_ptr<osgEarth::Util::EarthManipulator> mainManipulator = new osgEarth::Util::EarthManipulator;
	viewer.setCameraManipulator(mainManipulator);

	// run
	viewer.setUpViewInWindow(100, 100, 800, 600);
	viewer.run();

	return 0;
}

注意更改earth文件路径, 编译通过后,将目录D:\OSG\osgearth-2.10-VC2017-64-Release\bin下的所有文件(主要是dll和exe)复制到生成的exe目录下。

 运行程序,即可以看到一个地球了。 

 全文完。整理不易,欢迎点赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/895041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【业务功能篇70】可重入锁与不可重入锁

介绍 本篇介绍的是可重入锁和不可重入锁。可指的是可以&#xff0c;不可指的是不可以。重入指的是重复进入同步作用域。这里的同步作用域可以是同步代码块&#xff0c;也可以是同步方法或者是lock锁同步代码&#xff0c;无论是进入哪一个同步作用域&#xff0c;都意味着同步锁被…

解锁数据潜力:信息抽取、数据增强与UIE的完美融合

解锁数据潜力&#xff1a;信息抽取、数据增强与UIE的完美融合 1.信息抽取&#xff08;Information Extraction&#xff09; 1.1 IE简介 信息抽取是 NLP 任务中非常常见的一种任务&#xff0c;其目的在于从一段自然文本中提取出我们想要的关键信息结构。 举例来讲&#xff0…

大数据及软件教学与实验专业实训室建设方案

一 、系统概述 大数据及软件教学与实验大数据及软件教学与实验在现代教育中扮演重要角色&#xff0c;这方面的教学内容涵盖了大数据处理、数据分析、数据可视化和大数据应用等多个方面。以下是大数据及软件教学与实验的一般内容&#xff1a;1. 数据基础知识&#xff1a;教授学生…

5、flink任务中可以使用哪些转换算子(Transformation)

1、什么是Flink中的转换算子 在使用 Flink DataStream API 开发流式计算任务时&#xff0c;可以将一个或多个 DataStream 转换成新的 DataStream&#xff0c;在应用程序中可以将多个数据转换算子合并成一个复杂的数据流拓扑图。 2、常用的转换算子 Flink提供了功能各异的转换算…

尚硅谷大数据项目《在线教育之离线数仓》笔记002

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 P025 P026 P027 P028 P029 P030 P031 P032 P033 P034 P035 P036 P037 P038 P025 在Hive所在节点部署Spark P026 3&#xff09;Hive on Spark测试 &#xff08;1&#xff09;…

kali linux查看局域网下所有IP,并对指定IP攻击

kali linux查看局域网下所有IP&#xff0c;并对指定IP实施局域网内攻击 首先我们打开我们熟悉的kali linux操作系统&#xff0c;利用指令&#xff1a; ifconfig来确认本机的ip地址 确认了本机的ip地址之后&#xff0c;利用一下的指令查看局域网下所有ip: fping -g 本机IP地址…

SpringMVC-1-解密Spring MVC:构建优雅、灵活的Web应用的秘诀

今日目标 能够编写SpringMVC入门案例 了解SpringMVC原理 1. SpringMVC介绍 1.1 SpringMVC概述 思考:SpringMVC框架有什么优点&#xff1f; SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单&#xff0c;开发便捷&#xff08;相比于Servlet&#xff09; 天…

Java进阶篇--迭代器模式

目录 同步迭代器&#xff08;Synchronous Iterator&#xff09;&#xff1a; Iterator 接口 常用方法&#xff1a; 注意&#xff1a; 扩展小知识: 异步迭代器&#xff08;Asynchronous Iterator&#xff09;&#xff1a; 常用的方法 注意&#xff1a; 总结&#xff1a…

【S32K 进阶之旅】S32K 芯片的解锁

在使用 S32K1xx MCU 的过程中&#xff0c;因为某些不当操作导致芯片被锁、加密的情况偶有发生&#xff0c;在此总结一篇如何解锁芯片的文档&#xff0c;希望能够帮到有需要的人。 1. S32K 芯片被锁的现象及原因分析1&#xff09;在S32K 系列 MCU 开发和生产过程中&#xff…

【Unity细节】Unity中的层级LayerMask

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

元宇宙是什么?有哪些应用方向?一文了解元宇宙虚拟展厅

引言&#xff1a; 在当今数字科技飞速发展的时代&#xff0c;元宇宙作为一个令人向往的概念正逐渐进入大众的视野。那么&#xff0c;什么是元宇宙&#xff1f;元宇宙又有哪些应用方向呢&#xff1f;元宇宙虚拟展厅又有哪些优势呢&#xff1f; 一&#xff0e;元宇宙是什么 元宇…

eNSP 打开警告:请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行!

文章目录 1 警告截图2 解决办法 1 警告截图 2 解决办法 思路&#xff1a;按照警告的提示信息&#xff0c;将 eNSP 相关应用添加到 windows firewall&#xff08;防火墙&#xff09;的允许程序列表&#xff0c;并允许其在公用网络上运行&#xff01;此处以 Win 10 为例

怎么把人物抠到一个视频里?这个视频抠像方法一看就会

在视频中&#xff0c;人物抠像可以用于创建有趣的视觉效果&#xff0c;例如将人物放置在不同的场景中&#xff0c;或者创建动画效果。此外&#xff0c;它还可以用于制作特效&#xff0c;例如将人物的外观更改为其他形象&#xff0c;或者在人物移动时添加轨迹效果。那么怎么把人…

Eclipse常见的使用技巧(快捷键)大全

常用设置&#xff0c;非常建议 1.代码提示设置 2.快捷键设置 代码编写技巧 注意&#xff1a; 如果你设置了代码提示&#xff0c;那么下面操作快捷方式回车即可生成&#xff0c;不必alt/ 换行 ShiftEnter回车&#xff0c;不管光标在哪里都会换行&#xff01;非常好用&…

向日葵如何截图

场景 向日葵远程时&#xff0c;有时需要截图&#xff0c;但是客户电脑上没有qq、微信等软件提供快捷截图。 怎么办呢? 解决方案 其实向日葵肯定支持这些功能的。 设置 | 热键设置 | 勾选 远控其他设备时&#xff0c;可输入热键进行以下操作。 如果&#xff1a; altq 切换…

性能测试-并发用户数估算(超细整理)

前言 并发用户数&#xff1a;是指现实系统中操作业务的用户&#xff0c;在性能测试工具中&#xff0c;一般称为虚拟用户数(Virutal User)。 并发用户数和注册用户数、在线用户数的概念不同。 并发用户数一定会对服务器产生压力的&#xff1b; 而在线用户数只是 ”挂” 在系统…

一万字关于java数据结构堆的讲解,让你从入门到精通

目录 java类和接口总览 队列(Queue) 1. 概念 2. 队列的使用 以下是一些常用的队列操作&#xff1a; 1.入队操作 2.出队操作 3.判断队列是否为空 4.获取队列大小 5.其它 优先级队列(堆) 1. 优先级队列概念 Java中的PriorityQueue具有以下特点 2.常用的PriorityQue…

Doris的执行计划生成、分发与执行

目录 一、执行计划的生成 二、执行计划的分发 三、执行计划的执行 一、执行计划的生成 在Doris的FE端&#xff0c;与大多数数据库系统一样&#xff0c;要从SQL或某种http请求&#xff0c;生成执行计划&#xff0c;从SQL生成&#xff0c;一开始是“抽象语法树”&#xff08;…

FreeRTOS 从入门到精通-任务调度

初写FreeRTOS 从入门到精通系列文章之初&#xff0c;笔者只是当作可以随时回顾的学习笔记来写&#xff0c;并没有想到这些偏技术的文章收获了意料之外的阅读量和关注。首先当然很欣喜自己的文章能够得到了读者们的认可&#xff0c;但同时也有种使命感&#xff0c;既期望启迪并与…

模型评估的常用指标

模型评估的指标 模型是在大量的数据集上训练而来的,无论一个模型是从零训练的还是基于某一个模型,通过微调方法得到的,靠人工评价模型的效果都是异常困难的。那么要想客观的、自动化的评价一个LLM模型,就需要能够选择正确评估模型效果的指标或者基准测试,来客观和自动化的…