Windows系统安装轻量级高性能Web服务开发框架OAT++

news2024/9/21 8:02:03

一、软件简介


oat++ 是一个轻量级高性能 Web 服务开发框架,采用纯 C++ 编写而成。
官网:https://oatpp.io/   这个坑爹的网址在国内经常打不开,要多刷新几次。
Github: https://github.com/oatpp/oatpp  

当前版本:  1.3.0

其主要特性有:

•    随处运行
Oat++ 没有任何依赖性,可以很容易地移植到各种支持的平台上(Linux、MacOS、Windows)。
•    构建健壮的api
使用 Oat++ Simple-API,构建灵活而健壮的 API 既简单又有趣。
•    处理 500 万个连接
使用 Oat++ Async-API,可以在单个服务器上处理超过 500 万个并发连接。
•    访问数据库
Oat++ ORM 提供了一种简单而统一的方式来访问数据库
•    保持代码一致
Oat++ 在整个代码库中依靠对象映射来确保 API 和数据模型的一致性
•    生成 API 文档
使用 Swagger-UI 和 OpenAPI 3.0.0 自动记录 endpoints

二、环境要求

•    Git
https://git-scm.com/
当前版本2.39.1

•    CMake
https://cmake.org/
当前版本3.25.1

•    Microsoft Visual Studio
https://visualstudio.microsoft.com/zh-hans/
我使用的是Community 2022版,安装的时候至少要选择“使用C++的桌面开发”,如果要使用MFC,还要选择“适用于最新v143生成工具的C++ MFC (x86和x64)”以及“Visual Studio 扩展开发”

 

 

 

 

 

 

另外我使用的操作系统是Windows 7 旗舰版

三、安装OAT++

在oat++的官网上,安装非常简单,就几行命令。

这几个命令的问题是:只能安装debug win32 的版本,没有release win32 版本的,也没有x64版本的。还有一个问题是github.com 经常连不上。所以我把安装过程改了改。
我们这个文档是给不喜欢使用命令行的同学看的,对于喜欢命令行的同学来说,可以直接使用git和cmake命令。

首先下载oat++源码
运行windows开始菜单里的“Git GUI” 

点击Clone Existing Repository

 

Source Location输入:https://gitee.com/mirrors/oatpp.git
这里用的是镜像站点https://gitee.com/mirrors/oatpp.git,这是国内的网站,速度会快一些。当然你也可以使用原始站点:https://github.com/oatpp/oatpp.git
Target Directory输入:D:\code\oatpp
这是存放源代码的文件夹,要保证这个文件夹是空的。如果没有这个文件夹,倒是没什么关系,Git GUI会自动创建文件夹。


 
点击Clone按钮,开始下载源代码。下载完成后,会打开工作窗口

 

这个窗口我们不使用,直接关掉。
现在我们打开oatpp文件夹,就可以看到里面的源码了:
 

接着建立工作目录

建立两个文件夹x64和win32,这两个文件夹用来作为工作目录

运行windows开始菜单里的“CMake (cmake-gui)” 

点击Browse Source…按钮,选择oatpp文件夹,这是设置源代码所在的文件夹
点击Browse Build…按钮,选择x64文件夹,这是设置工作目录 

 点击Configure按钮

点击Optional platform for generator (if empty, generator uses: x64)下面的下拉框
 

选择x64 , 这样编译出来的就是x64版本的软件。如果要编译win32版本的,就选择Win32

点击Finish按钮,回到CMake主窗口

 

点击Generate按钮

 

窗口最下面出现“Generating done”,就说明Generate工作完成。

现在我们打开x64文件夹就会看到里面已经产生了Visual Studio的解决方案

 

 双击oatpp.sln文件,启动Visual Studio

我们可以看到,现在是在Debug x64模式下,如果要编译Release x64版本,就要点击Debug下拉框,改成Release。如果要编译win32版本,就要在上文提到的CMake里面设置Optional platform for generator (if empty, generator uses: x64)为win32

右击解决方案资源管理器中的“INSTALL”,在弹出菜单中选择“生成”,等几分钟,等它运行结束之后,我们查看输出窗口

可以看到oat++已经被安装到C:\Program Files\oatpp 文件夹了
文件夹C:\Program Files\oatpp\lib\oatpp-1.3.0 里面的oatpp.lib文件,就是我们需要的库文件,它是Debug x64版本的
文件夹C:\Program Files\oatpp\include里面就是头文件
另外x64\src\Debug文件夹下面也有库文件

现在我们把Visual Studio 改为 Relaese模式

 

右击解决方案资源管理器中的“oatpp”,在弹出菜单中选择“生成”,等它运行完之后,查看输出窗口 

可以看到x64\src\Release文件夹里面已经生成了Release x64版本的oatpp.lib

Debug Win32 和 Release Win32版本的编译

至于Debug Win32 和 Release Win32版本的编译,基本和x64版本相同,要注意的就是CMake里面设置Optional platform for generator (if empty, generator uses: x64)为Win32 

 另外工作目录的选择要注意,不能再用x64文件夹,应该改成其他文件夹,我这里使用了win32文件夹。生成的解决方案如下图所示:

 双击oatpp.sln,运行Visual Studio,这回出现Debug Win32模式了:

我们可以看到Debug Win32模式下,安装的路径变成了C:/Program Files (x86)/oatpp/ 

 

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

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

相关文章

用PYTHON自动登录SAP GUI

我们都知道,SAP原生的“脚本录制和回放”功能是在用户进入到某一个SAP”用户指定系统“后才可以启用: 也就是说,从这里开始,您可以通过脚本录制,生成用户名、密码的输入和SAP登录过程的完整代码; 那么我们…

第三层:C++对象模型和this指针

文章目录前情回顾C对象模型和this指针类成员变量和类成员函数的储存this指针this指针概念this指针用途用途1解释用途2解释空指针调用成员函数const修饰的成员变量常函数内可以被修改的值突破!步入第四层本章知识点(图片形式)🎉wel…

Matlab中算法结合Simulink求解直流微电网中功率

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

初识 jQuery(JavaScript 框架)

初识 jQuery(JavaScript 框架)参考描述jQuery使用 jQuery 的开发优势(部分)获取jQuery 语法基础语法入口函数$()jQuery 与 $参数DOM 与 jQuery模板获取DOM 对象jQuery 对象转换DOM 对象转换为 jQuery 对象$()jQuery 对象转换为 DO…

Linux系统管理中Nginx和python的安装以及python虚拟环境软件的安装与使用(四)

1、Nginx的安装和配置: 说明:Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进…

C++:list结构算法

List 1.元素在逻辑上具有线性次序,物理地址不做限制。 2.哨兵节点,header和trailer,封装后外部不可见。 3.重载操作符[],实现下标和位置转换。 4.有序查找无序查找 5.前插入算法,首先创建新节点 然后使new成为this节点…

设计模式之代理模式(静态动态)代理

前言:二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥…

PHP设计模式

目录 一、使用设计模式目的 二、设计模式的七大原则 三、创建型模式(构建型模式) 1、单例模式 代码实例 2、工厂模式 2.1、工厂模式——简单工厂模式 简单工厂模式的代码实例 2.2、工厂模式——工厂方法模式 工厂方法模式的代码实例 2.3、工厂…

java开发环境配置及问题排查

Java程序必须运行在JVM之上,所以,我们第一件事情就是安装JDK。 JDK(Java Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM…

Java内存模型和线程安全

Java内存模型和线程安全Java内存模型引言volatile关键字synchronized关键字Java线程Java线程安全synchronized锁优化锁优化技巧列举自旋锁锁消除锁粗化具体实现轻量级锁偏向锁Java内存模型 引言 对于多核处理器而言,每个核都会有自己单独的高速缓存,又因为这多个处理器共享同一…

JavaWeb-会话技术

JavaWeb-会话技术 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理解什么是会话,然后再去理解什么是会话跟踪: 会话:用户打开浏览器,访问web服务器的资源,会话建立&#xff…

反射机制.

文章目录概述两个疑问关于java.lang.Class的理解获取Class实例的方式哪些类型可以有Class对象了解类的加载器掌握加载配置文件的另一种方式创建运行时类的对象体会动态性获取运行时类的完整结构调用运行时类的制定结构每日一考动态代理概述 1、反射是动态语言的关键 2、动态语…

使用Docker打包镜像并发布

1、docker介绍 Docker 是一个开源的应用容器引擎,以镜像的形式进行发布。docker的图标是一个大鲸鱼驮着许多集装箱在海上航行。大鲸鱼就是docker,集装箱就是一个个容器。容器是完全使用沙箱机制,相互之间不会有任何接口,每个容器都…

高级Spring之BeanFactory 与 ApplicationContext 的区别

ApplicationContext接口 SpringBootApplication public class A01 {private static final Logger log LoggerFactory.getLogger(A01.class);public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IOException {//启动SpringBoot程序…

Python Scipy 显著性检验

Scipy 显著性检验显著性检验(significance test)就是事先对总体(随机变量)的参数或总体分布形式做出一个假设,然后利用样本信息来判断这个假设(备择假设)是否合理,即判断总体的真实情…

Linux基本功系列之userdel命令实战

春节马上要到了,大街上到处都是张灯结彩,喜气洋洋的景象,你们那里也开始了吗? 文章目录一. userdel命令概述二. 语法格式及常用选项语法格式及常用参数三. 参考案例3.1 删除用户但不删除家目录等相关的文件3.2 把用户彻底删除3.3 …

【Linux05-进程控制】进程创建、进程等待、进程退出、进程程序替换(附简易shell实现)

前言 本期分享进程控制的内容。 博主水平有限,不足之处望请斧正! 进程的控制主要分为四点: 进程创建进程退出进程等待进程程序替换 进程创建 怎么创建 通过fork创建。 #fork 是什么 创建子进程的函数。(使用已经介绍过&am…

Python基础学习 -- 概念

一、变量python的变量定义起来比较随意,不用定义数据类型a123b"123"系统会自动识别a为数值,b为字符串二、关键字定义变量名字的时候,要避开下面的关键字,但是可以通过大小写区分,as123;#错误定义As123;print…

阿里云服务器ECS

云服务器 ECS云服务器ECS(Elastic Compute Service)是一种简单高效、处理能力可弹性伸缩的计算服务。帮助您构建更稳定、安全的应用,提升运维效率,降低IT成本,使您更专注于核心业务创新。为什么选择云服务器ECS选择云服…

音频如何分割成两段音频?这些实用方法值得收藏

有些时候,我们从网上下载的音频素材可能会出现体积较大、播放时间长等情况,而我们却只需要其中的一小段。这个时候我们就需要借助一些音频分割软件来将重要的音频片段提取出来,从而有助于缩小音频文件的占比以及存储。那么如何如何分割音频呢…