Ubuntu+vscode+CGAL6.0库安装入门教程

Ubuntu下的CGAL6.0.1安装入门教程

CGAL的官方文档

https://doc.cgal.org/latest/Manual/usage.html#title3

https://github.com/CGAL/cgal/

安装环境如下

复制代码
Ubuntu 22.04
boost 1.75
cmake 3.22.1

一、安装CGAL库

安装CGAL需要预先安装一些基础库Boost、GMP、MPRF等

1、Boost库安装

Boost库安装,见这里

2、GMP库安装

官方下载GMP库,下载地址

bash 复制代码
tar xf gmp-6.3.0.tar.xz
cd gmp-6.3.0
./configure --prefix=/usr/local/gmp
make
make check
sudo make install

3、MPRF库安装

官方下载MPRF库,下载地址

bash 复制代码
tar xf mpfr-4.2.1.tar.xz
cd mpfr-4.2.1
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make
make check
sudo make install

关于GMP MPIR MPFR MPC这几个库的介绍

1、GMP是一个大数运算库,支持任意精度的运算,全称GNU Multiple Precision Arithmetic Library,支持任意精度的数学运算,包括有符号整数、有理数和浮点数‌;https://gmplib.org/

2、MPFR是一个多精度高效的浮点计算C语言库,全称Multiple Precision Floating-Point Reliable"‌‌, 基于GMP,官方地址https://www.mpfr.org/

3、MPIR是一个用于处理大整数和有理数的操作的库,全称Multiple Precision Integers and Rationals,是GMP的改进,可兼容GMP的API

4、MPC是一个复数运算库,同时依赖GMP(大数运算库)和MPFR(浮点运算库)

4、安装CGAL库

官方下载CGAL库,下载地址

点击进入github页面,下载源码

CGAL-6.0.1.zip解压出来

bash 复制代码
cd CGAL-6.0.1
mkdir build
cd mkdir
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/CGAL
make
make install

根据CGAL官方文档的安装指引,CGAL5.0之后是不需要编译的,只需要使用头文件就好,原文如下:Since CGAL version 5.0, CGAL is header-only be default, which means that there is no need to build CGAL before it can be used. However, some dependencies of CGAL might still need to be installed. 官方文档,点这里

当然官方还提供另外一种Ubuntu下的安装方式,直接用现成的编译包

bash 复制代码
sudo apt-update
sudo apt-get install libcgal-dev
# GMP、MPFR也可使用apt安装
# sudo apt-get install libgmp-dev
# sudo apt-get install libmpfr-dev

可是使用apt show libcgal-devapt-cache show libcgal-dev查看cgal包的版本

安装过程非常顺利,接下来就是测试了

二、测试CGAL库

测试一个计算两个点距离的demo,打开vscode,创建main.cpp、CMakeList.tx文件,如下所示:

main.cpp

cpp 复制代码
#include <CGAL/Simple_cartesian.h>
#include <CGAL/point_generators_2.h>
#include <CGAL/algorithm.h>
#include <iostream>
 
typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
 
int main() {
    // 创建两个点
    Point_2 p1(3.0, 3.0);
    Point_2 p2(4.0, 4.0);
 
    // 计算两点之间的距离
    double distance = CGAL::squared_distance(p1, p2);
    std::cout << "p1到p2的dstance=: " << distance << std::endl;

    return 0;
}

创建好后,发现include语法提示错误

我们只要在vscode的开发环境变量添加前面CGAL安装好的路径/usr/local/CGAL/include添加到c_cpp_properties.json下的includePath,如下所示

关于vsode下的c++环境配置教程可以参考这里

CMakeLists.txt

c 复制代码
cmake_minimum_required(VERSION 3.1)
project(cgal_demo)
 
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(GMP_INCLUDE_DIR /usr/local/gmp/include)
set(GMP_LIBRARIES /usr/local/gmp/lib/libgmp.so)

set(MPFR_INCLUDE_DIR /usr/local/mpfr/include)
set(MPFR_LIBRARIES /usr/local/mpfr/lib/libmpfr.so)

# 查找 CGAL 包
find_package(CGAL REQUIRED)
 
# 添加可执行文件
add_executable(cgal_demo main.cpp)
 
# 链接 CGAL 库
target_link_libraries(cgal_demo CGAL::CGAL)

find_package指令

这条指令可以直接帮我们解决整个工程的依赖问题,自动把头文件和动态链接文件配置好。

比如说,在Linux下面工程依赖了OpenCV,只需要下面几行就可以完全配置好:add_executable(my_bin src/my_bin.cpp)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

target_link_libraries(my_bin, ${OpenCV_LIBS})
find_package工作流程如下:

find_package在一些目录中查找OpenCV的配置文件,找到后find_package会将头文件目录设置到${OpenCV_INCLUDE_DIRS}中,将链接库设置到${OpenCV_LIBS}中。设置可执行文件的链接库和头文件目录,编译文件。

CMakeLists.txt同级目录创建一个空的文件夹build

bash 复制代码
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release 
# 当然也可以直接使用cmake .. 不带参数

编译后生成一个cgal_demo,执行测试一下

bash 复制代码
$ ./cgal_demo
p1到p2的dstance= 2

如下所示

安装成功!

相关推荐
藥瓿亭2 小时前
K8S认证|CKS题库+答案| 6. 创建 Secret
运维·ubuntu·docker·云原生·容器·kubernetes·cks
舰长1152 小时前
Ubuntu挂载本地镜像源(像CentOS 一样挂载本地镜像源)
linux·ubuntu·centos
Theodore_10223 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
Unpredictable2224 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
姓刘的哦7 小时前
ubuntu中使用docker
linux·ubuntu·docker
MrWang.7 小时前
Ubuntu中SSH服务器安装使用
服务器·ubuntu·ssh
_lizhiqiang7 小时前
联想拯救者R9000P 网卡 Realtek 8852CE Ubuntu/Mint linux 系统睡眠后,无线网卡失效
linux·运维·ubuntu·r9000p·无线网卡·8852ce
笑醉踏歌行9 小时前
NVM,Node.Js 管理工具
运维·ubuntu·node.js
bbsh209912 小时前
WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤
linux·ubuntu·.netcore·webfuture
藥瓿亭1 天前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks