ubuntu20.04系统下,c++图形库Matplot++配置

linux下安装c++图形库Matplot++,使得c++可以可视化编程;安装Matplot++之前,需要先安装一个gnuplot,因为Matplot++是依赖于此库

gnuplot下载链接:
http://www.gnuplot.info/

一、gnuplot下载与安装(可以跳过,下面源码安装,直接apt install gnuplot)

下面==gunplot的安装步骤可以跳过,直接用apt包管理器安装==

step1.进入链接点击Release链接,如下图所示
step2. 选择tar.gz后缀文件,进行下载:
step3.下载成功后,cd进入安装包的目录,然后使用tar命令进行解压;
bash 复制代码
tar -zxvf gnuplot-6.0.1.tar.gz

tar -zxvf 是用于解压 .tar.gz 格式压缩包的常用命令,其中每个参数的含义如下:

  • -z :通过 gzip 进行解压缩。.tar.gz 文件是先用 tar 进行打包,然后用 gzip 压缩的。
  • -x:解压文件(extract)。
  • -v:显示解压过程中的文件列表(verbose)。
  • -f:指定要操作的文件(file)。这个选项需要紧跟在压缩文件名之前。
step4. 解压缩后进入此文件夹
bash 复制代码
cd gnuplot-6.0.1
step5. 进入文件夹后,做一些依赖配置
bash 复制代码
sudo apt install qtbase5-dev qtbase5-dev-tools libqt5svg5-dev qttools5-dev-tools

此命令安装一些依赖,包括qt5相关的一些工具,这里如果后面报错,可能是系统还缺乏其他依赖,可以再问下gpt,进行补充安装;

step6 .配置编译选项:
bash 复制代码
./configure --prefix=/usr/local/gnuplot --with-qt=qt5

其中,--perfix是设置安装路径,--with是设置依赖

step 7. 编译,安装

首先使用make命令进行编译

这里编译不通过可能是缺少依赖,具体缺少什么,可以自行检查;

然后再安装:

bash 复制代码
sudo make install
step8. 配置环境变量

配置环境变量:

使用gedit打开.bashrc

bash 复制代码
sudo gedit ~/.bashrc

在结尾加入下面环境变量设置并保存:

bash 复制代码
# for gnuplot
export GNUPLOT=/usr/local/gnuplot
export PATH=/usr/local/gnuplot/bin:$PATH
export MANPATH=/usr/local/gnuplot/share/man/man1:$MANPATH

保存后记得刷新一下环境变量设置:

bash 复制代码
source ~/.bashrc

然后可以用以下命令进行测试:

bash 复制代码
which gnuplot
gnuplot--version
gnuplot

下面用which,出现路径则说明安装成功。

二、Matplot++下载配置

下载链接:
https://alandefreitas.github.io/matplotplusplus/

进入网址,下滑,点击download按钮

链接会跳转到github,然后不要选择最新的,而是选择下面的1.2.0版本,因为这个版本有编译后的软件包,安装起来比较方便。

下载后安装Matplot++

首先,进入下载的目录,进行安装包解压,并进入解压后的文件夹;

bash 复制代码
tar -xvzf Matplot++-1.2.0-Linux.tar.gz
cd Matplot++-1.2.0-Linux

会有两个文件

这两个文件内部都是直接已经编译好的,可以直接放到ubuntu的对应系统目录里,编译器便可以识别到。

bash 复制代码
sudo mv ./include/matplot/  /usr/local/include/
sudo mv ./lib/*   /usr/local/lib/

最后,要进行包含头文件,以及对CmakeList.txt的编写,以管理库依赖,C++包含:

cpp 复制代码
#include "matplot/matplot.h"

这里这个头文件的写法,是因为,默认编译器会搜索到/user/loacal/include这一层,这一层都是文件夹,比如matplot就在这层级,而matplot.h在matplot文件夹下,故要#include "matplot/matplot.h"这样包含。

CMakeLists添加:

重点是以下几个命令的添加。

bash 复制代码
find package(Matplot++REQUIRED)
if (TARGET Matplot++:matplot)
message(STATUS "**Matplot++found ***")
endif()
target link libraries(${PROJECT NAME}
PUBLIC
Matplot++:matplot)

完整的CMakeLists.txt文件为:

bash 复制代码
cmake_minimum_required (VERSION 3.10)
project(test)
set(CMAKE_CXX_STANDARD 11)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)

find_package(Matplot++ REQUIRED)
if (TARGET Matplot++::matplot)
message(STATUS "**Matplot++found**")
endif()
add_executable(matplottest test.cpp)

target_link_libraries(matplottest
PUBLIC
Matplot++::matplot
)

然后,Matplot++的官网有很多示例,可以学习使用;
https://alandefreitas.github.io/matplotplusplus/

下面是自己的文件结构:

然后点击左下角的build按钮进行编译,点击左下角的运行按钮,便可以画出图。

相关推荐
yunwei3722 分钟前
eBPF 教程:用 BPF Qdisc 实现出口限速
linux·云原生·开源
mengge.cloud24 分钟前
Linux三剑客 grep sed awk 小白基础教程
linux·运维·服务器·网络
盐焗鹌鹑蛋33 分钟前
【Linux】进程间通信与进程池
linux
无毁的湖光-Al1 小时前
解Bug之路-with AI-应用被限流?
java·linux
Brilliantwxx1 小时前
【Linux】 进程(4)七大进程状态深度解析
linux·运维·算法
国际云,接待1 小时前
df 显示磁盘还有空间却无法写文件:Linux inode 耗尽排查与治理
linux·运维·服务器
青少儿编程课堂1 小时前
用图形化编程做一个“少年探险闯关”小游戏:方向键控制、碰撞检测与多关卡串起完整项目
c++·python·算法·bfs·信息学竞赛
liulilittle1 小时前
长上下文的成本结构与「甜点区间」——从推理引擎的物理约束看 200K/256K/400K
c++·人工智能·ai·llm·注意力·qkv
十五年专注C++开发1 小时前
100w条数据丝滑滚动!Qt Model/View 架构实战(二)
开发语言·c++·qt
一路向北finish2 小时前
《CentOS 7 搭建 Hadoop 3.3.6 分布式集群:NFS 共享方案完整实操》
linux·运维·hadoop·分布式·centos