Windows11平台在VS2022上通过CMake安装C++绘图库ROOT库

2024-05-27 04:20

本文主要是介绍Windows11平台在VS2022上通过CMake安装C++绘图库ROOT库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Root库是一个功能强大的开源软件框架,用于数据分析、可视化和存储。它最初是为高能物理实验设计的,但现在已经广泛应用于各种科学领域和工程应用中。Root库使用C++编写,提供了许多用于数据处理和分析的工具和算法。它的核心功能包括数据存储、数据分析、绘图和可视化。

在数据存储方面,Root库提供了一个灵活的文件格式,称为ROOT文件。这种文件格式可以存储大量的数据对象,包括数字、直方图、图形等。它还支持数据的压缩和索引,以提高存储效率和访问速度。

在数据分析方面,Root库提供了丰富的工具和算法。它支持各种统计分析、拟合和优化算法,可以处理大型数据集和复杂的数据结构。Root库还提供了一些特殊的数据类型,如多维数组和树结构,以便更好地组织和处理数据。

在绘图和可视化方面,Root库提供了强大的绘图工具,可以绘制各种类型的图表和图形。它支持二维和三维绘图,可以生成高质量的科学图像。此外,Root库还提供了交互式图形界面,使用户能够直观地浏览和操作数据。

本篇博客通过安装Root库在VS2022上绘制一个简单的柱状图(博主使用的root库版本是6.30.06)。

首先在官网下载发行的ROOT包,选择64位的windows平台的.zip文件下载。

Releases - ROOT

然后解压到你的安装目录就可以了。

打开bin目录,并且通过管理员的身份允许thisroot.bat,然后会有一个黑窗一闪而过。

在系统环境变量的path变量里面新建一个目录。

打开控制台输入root指令,出现以下界面就安装成功了。

打开VS2022创建一个C++的CMake项目,项目名称为plottest,由于ROOT在VS2022中并不支持VS2022本身的包管理工具,所以只能借助CMake来导入ROOT库的头文件和静态链接库文件,如果你执意用VS2022本身的包管理工具极有可能出现error2019:不能识别标识符的问题。

以下是CMakeList.txt里面的代码, 将它复制到CMakeLitsts.txt中,并且重新生成CMake。

# CMakeList.txt: plottest 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)# 如果支持,请为 MSVC 编译器启用热重载。
if (POLICY CMP0141)cmake_policy(SET CMP0141 NEW)set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()project ("plottest")
find_package(ROOT REQUIRED)
set(CMAKE_CXX_FLAGS "${ROOT_CXX_FLAGS}")
include(${ROOT_USE_FILE})
include_directories(${ROOT_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
link_directories(${ROOT_LIBRARY_DIR})
# 将源代码添加到此项目的可执行文件。
add_executable (plottest "plottest.cpp" "plottest.h")if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET plottest PROPERTY CXX_STANDARD 20)
endif()
target_link_libraries(plottest ${ROOT_LIBRARIES})
# TODO: 如有需要,请添加测试并安装目标。

plottest.cpp里面的代码如下,怎么说呢,这代码风格和Qt不能说只有一点像,只能说是完全一样。 

#include <iostream>
#include <TCanvas.h>
#include <TH1F.h>
#include <TApplication.h>int main() {// 创建一个ROOT应用程序对象TApplication app("app", 0, nullptr);// 创建一个ROOT画布TCanvas* canvas = new TCanvas("canvas", "Bar Chart", 800, 600);// 创建一个1维直方图,用于绘制柱状图TH1F* histogram = new TH1F("histogram", "Bar Chart", 5, 0.5, 5.5);// 设置柱子的高度histogram->SetBinContent(1, 3);histogram->SetBinContent(2, 7);histogram->SetBinContent(3, 2);histogram->SetBinContent(4, 5);histogram->SetBinContent(5, 1);// 设置柱子的颜色histogram->SetFillColor(kBlue);// 绘制柱状图histogram->Draw("BAR");// 更新画布canvas->Update();// 进入ROOT事件循环app.Run();return 0;
}

运行代码,成功绘制了柱状图。 

这篇关于Windows11平台在VS2022上通过CMake安装C++绘图库ROOT库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006495

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我