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

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境