[CGAL] CGAL的编译与使用

article/2025/9/21 13:02:18

文章目录

  • 方法一:自己安装依赖库
      • 安装Boost
      • 安装CGAL
      • 安装Qt
      • 编译示例
      • 在VS中使用CGAL库
        • 引用boost
        • 引用gmp
        • 引用CGAL
        • Helloworld
      • 报错处理
        • 在cmake配置时报错:未能找到Boost
        • 编译示例,未找到GMP
        • 编译Mesh_3例子报错:未能找到Eigen3
        • 编译demo/Polyhedron失败:未能找到METIS
  • 方法二:用Vcpkg库管理器安装
      • 安装CGAL库
      • 编译示例
  • 参考文章

更多CGAL文章,请看CGAL知识库
计算几何技术交流群:604668232

从5.0版本开始,CGAL仅是一个头文件库,这意味着CGAL无需编译,只需安装好CGAL的依赖项即可。

  • CGAL主要依赖项是boost
  • CGAL还依赖GMP和MPFR(CGAL会提供编译好的)
  • 如果需要使用CGAL的可视化功能,则还需要Qt库

附:CGAL依赖环境、依赖库的详细说明

如果遇到问题,欢迎留言。也可以加群讨论。

方法一:自己安装依赖库

CGAL5.0.2 + Windows + VS17

此示例也安装了Qt模块,这意味着安装成功后可使用CGAL的可视化功能。

安装Boost

Boost是CGAL的强制依赖库。下载地址

  1. 下载boost_1_71_0-msvc-XX.Y-64.exe
    1. VS2015选择XX.Y=14.0
    2. VS2017选择14.1
    3. VS2019选择14.2
  2. 运行下载器,安装到D:\local\boost_1_71_0
  3. 设置环境变量,这帮助cmake找到boost
    • BOOST_LIBRARYDIR = D:\local\boost_1_71_0\lib64-msvc-14.1
    • Boost_INCLUDEDIR = D:\local\boost_1_71_0
    • PATH = D:\local\boost_1_71_0\lib64-msvc-14.1

安装CGAL

下载地址
(1)下载CGAL-5.0.2-Setup.exe
这是一个自解压的可执行文件,它会下载CGAL头文件、示例、演示的源代码,还会下载GMP和MPFR的预编译版本

  1. 若提示环境变量设置失败,要让我们自行设置环境变量:PATH = D:\local\CGAL-5.0.2\auxiliary\gmp\lib
  2. 此exe下载器必须完整下载文件,如果报错则代表没有下载完成。建议科学上网,而且网速要快

(2)配置环境变量
CGAL_DIR = D:\local\CGAL-5.0.2,帮助cmake在配置过程中找到CGAL

注:如果你下载的CGAL版本没有提供exe,或者下载速度太慢,可以直接下载提供的zip包

安装Qt

(1)下载适合VS版本的Qt库以及开发包
建议大家安装QT5.13.1,下载地址

(2)添加环境变量

  1. QTDIR = D:\local\Qt\Qt5.13.1,帮助cmake找到Qt
  2. PATH = D:\local\Qt\Qt5.13.1\5.13.1\msvc2017_64\bin。为了避免与另一个文件夹中具有相同名称的另一个dll发生任何冲突,请将此路径添加为列表中的第一个。

(3)在VS中安装Qt插件

  1. 打开VS17,工具–>扩展和更新–>联机–>搜索Qt–>安装Qt Visual Studio Tools
  2. 安装完成后,重启VS,点集文件->新建->项目->Qt就可以关于Qt的信息;并且在工具栏中会有Qt VS Tools选项

(4)配置VS中的Qt插件

  1. 在工具栏中打开Qt VS Tools–>Qt Options–>Add
  2. 添加msvc_2017_64 = D:\local\Qt\Qt5.13.1\5.13.1\msvc2017_64

编译示例

(1)进入目录(cmd命令)

D:\local\CGAL-5.0.2> cd examples\Triangulation_2
D:\local\CGAL-5.0.2\examples\Triangulation_2> mkdir build
D:\local\CGAL-5.0.2\examples\Triangulation_2> cd build
D:\local\CGAL-5.0.2\examples\Triangulation_2\build> cmake-gui ..

(2)使用cmake生成工程文件

  1. 打开cmake的图形界面
  2. where is the source code:D:\local\CGAL-5.0.2\examples\Triangulation_2
  3. where to build the binaries:D:\local\CGAL-5.0.2\examples\Triangulation_2\build
  4. Configure->VS 15 2017,Win64->Finish
  5. Generate


(3)运行

  1. 打开生成的Triangulation_2_Examples.sln文件(目录位置:D:\local\CGAL-5.0.2\examples\Triangulation_2\build
  2. 选择要编译的例子: 将draw_triangulation_2设置为启动项
  3. 运行即可

问题:如果没有出现图案
请添加图片描述

请把D:\01local\CGAL-5.2.1\examples\Triangulation_2\data文件夹拷贝到D:\01local\CGAL-5.2.1\examples\Triangulation_2\build\Triangulation_2_Examples.sln同目录下即可

在VS中使用CGAL库

引用boost

boost的dll和lib文件名中包含gd的为debug版本,这里以使用release版本为例

  1. include目录:D:\local\boost_1_71_0
  2. lib文件目录:D:\local\boost_1_71_0\lib64-msvc-14.1
  3. lib文件名列表(release版本)

(或者直接D:\local\boost_1_71_0\lib64-msvc-14.1\*.lib

boost_container-vc141-mt-gd-x64-1_71.lib
boost_date_time-vc141-mt-gd-x64-1_71.lib
libboost_exception-vc141-mt-gd-x64-1_71.lib
boost_filesystem-vc141-mt-gd-x64-1_71.lib
boost_graph-vc141-mt-gd-x64-1_71.lib
boost_iostreams-vc141-mt-gd-x64-1_71.lib
boost_locale-vc141-mt-gd-x64-1_71.lib
boost_math_c99-vc141-mt-gd-x64-1_71.lib
boost_math_c99f-vc141-mt-gd-x64-1_71.lib
boost_math_c99l-vc141-mt-gd-x64-1_71.lib
boost_math_tr1-vc141-mt-gd-x64-1_71.lib
boost_math_tr1f-vc141-mt-gd-x64-1_71.lib
boost_math_tr1l-vc141-mt-gd-x64-1_71.lib
boost_prg_exec_monitor-vc141-mt-gd-x64-1_71.lib
boost_random-vc141-mt-gd-x64-1_71.lib
boost_regex-vc141-mt-gd-x64-1_71.lib
boost_serialization-vc141-mt-gd-x64-1_71.lib
boost_system-vc141-mt-gd-x64-1_71.lib
libboost_test_exec_monitor-vc141-mt-gd-x64-1_71.lib
boost_thread-vc141-mt-gd-x64-1_71.lib
boost_unit_test_framework-vc141-mt-gd-x64-1_71.lib
boost_wserialization-vc141-mt-gd-x64-1_71.lib

引用gmp

下载链接:https://github.com/CGAL/cgal/releases中GMP and MPFR libraries, for Windows 64bits的链接

  1. lib目录:D:\local\CGAL-5.0.2\auxiliary\gmp\lib
  2. lib文件名
libgmp-10.lib
libmpfr-4.lib
  1. include目录:D:\local\CGAL-5.0.2\auxiliary\gmp\include
  2. 将dll拷贝到:程序生成的exe所在目录,本例中是D:\codes\Cpp3D\bin\x64\Debug

引用CGAL

CGAL只是一个头文件夹包,只要引用头文件即可

  1. include目录:D:\local\CGAL-5.0.2\include

Helloworld

#include <iostream>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel; //精确谓词、精确构造的内核
typedef Kernel::Point_3 CGPoint3;using namespace std;int main()
{double x = 2.21231224, y = 3.321443645, z = 4.12335465;CGPoint3 pnt(x, y, z);cout << pnt << endl;//double x1 = pnt.x();double x1 = CGAL::to_double(pnt.x());cout << x1 << endl;//to_intervalreturn 0;
}

请添加图片描述

报错处理

在cmake配置时报错:未能找到Boost

报错:Could NOT find Boost (missing: Boost_INCLUDE_DIR)
解决:虽然设置了BOOST的环境变量,但这里还是找不到。所以修改一下Cmake文件

  1. 打开CGAL-5.0.2\cmake\modules\CGAL_SetupBoost.cmake
  2. 在find_package语句前面,设置BOOST的路径:SET(BOOST_ROOT "D:\local\boost_1_71_0")
  3. 看到cmake中的变量为${Boost_INCLUDE_DIRS}${Boost_LIBRARIES},将环境变量改成这个

编译示例,未找到GMP

报错:CMake Error at C:/local/CMake/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message): Could NOT find GMP (missing: GMP_LIBRARIES)

请添加图片描述
问题:发现D:\01local\CGAL-5.2.1\auxiliary\gmp路径中是空的

解决:

  1. 在网站中下载CGAL的工具库

请添加图片描述

  1. 下载之后将gmp拷贝到D:\01local\CGAL-5.2.1\auxiliary\gmp中
  2. D:\01local\CGAL-5.2.1\auxiliary\gmp\lib配置到Path中

编译Mesh_3例子报错:未能找到Eigen3

Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。Eigen是一个开源库,从3.1.1版本开始遵从MPL2许可。
请添加图片描述

安装Eigen3

  1. Eigen3下载地址,解压到D:\local
  2. 配置环境变量:EIGEN3_INCLUDE_DIR = D:\local\eigen-3.3.7
  3. 如果发现还会报错,则可以打开D:\local\CGAL-5.0.2\Cmake\modules/FindEigen3.cmake,在前面添加上这句话SET(EIGEN3_INCLUDE_DIR D:/local/eigen-3.3.7)

请添加图片描述4. 再次配置,cmake即可通过

编译demo/Polyhedron失败:未能找到METIS

METIS是一个图分割库(graph partitioning)

请添加图片描述

安装metis:

  1. 下载

方法二:用Vcpkg库管理器安装

可使用Vcpkg包管理器安装CGAL,它会自动安装CGAL的依赖项目
这非常方便,但由于网络的问题,安装有时候会出错。​
比如:使用Vcpkg安装CGAL的qt模块经常报错(./vcpkg.exe install cgal[qt]:x64-windows

安装CGAL库

(1) 安装Vcpkg

D:\local>git clone https://github.com/microsoft/vcpkg
D:\local>cd vcpkg
D:\local\vcpkg>.\bootstrap-vcpkg.bat

(2) 配置Vcpkg的环境变量,修改编译器版本

  1. 打开配置文件:{VCPKG_ROOT}\triplets\x64-windows.cmake
  2. 添加或修改此句话:set(VCPKG_PLATFORM_TOOLSET v141),表明设置为VS2017。否则会以电脑中最新的VC++版本编译

(3) 用Vcpkg安装CGAL

D:\local\vcpkg>.\vcpkg.exe install cgal:x64-windows


(4) 将vckpg下载的内容集成到工程中

  1. 在Vcpkg中生成NuGet配置文件
    D:\local\vcpkg>.\vcpkg.exe integrate project
  2. 在NuGet中添加源
    打开VS->工具->NuGet包管理器->程序包管理器设置->程序包源->添加源->选择vcpkg目录下的“scripts\buildsystems”目录
  3. 在工程中添加vcpkg
    打开VS工程->右键点击需要设置的工程,选择“管理NuGet程序包”->在右上角的“程序包源”中选择刚刚设置的“vcpkg”。这样在“浏览”选项卡中就可以看到“vcpkg.D.local.vcpkg”->安装

至此,CGAL库已安装成功,可以正常使用它的核心功能。

编译示例

(1)下载示例
CGAL官方示例(下载地址),并解压

(2)进入示例文件夹,打开cmake的GUI软件

C:\dev\CGAL-5.0.2> cd examples\Triangulation_2
C:\dev\CGAL-5.0.2\examples\Triangulation_2> mkdir build
C:\dev\CGAL-5.0.2\examples\Triangulation_2> cd build
C:\dev\CGAL-5.0.2\examples\Triangulation_2\build> cmake-gui ..

(3)点击Configure,配置内容

  1. 指定生成器Generator,如VS2017
  2. 指定平台Optional Platform,如x64
  3. 指定交叉编译的工具链文件(toolchain file for cross compilation),即vcpkg.cmake文件(D:\local\vcpkg\scripts\buildsystems\vcpkg.cmake
  4. 如果示例需要Qt库,则填写Qt有关的CMake变量和路径
  5. 点击生成Generate,生成VS工程。即可打开工程并编译

参考文章

  1. vs2017 搭建最新CGAL5.0.2
  2. VS2017安装Qt
  3. windows安装CGAL(VS19+CGAL5.0.2)
  4. Visual Studio引入外部库 ---- 弄懂静态库lib和动态库dll

http://chatgpt.dhexx.cn/article/wxBx0X91.shtml

相关文章

CGAL学习之路(三):CGAL读写点云

文章目录 1 CGAL创建点云1.1 insert方式1.2 迭代器方式 2 CGAL读点云2.1 读取XYZ点云2.2 读取PLY点云2.3 ifstream读取XYZ \ PLY点云 3 CGAL输出点坐标3.1 输出点云所有坐标3.2 输出某一点的坐标3.3 输出XYZ坐标 4 CGAL保存点云&#xff08;XYZ | PLY&#xff09;5 添加法向量字…

【C++】CGAL学习笔记

一、HELLO WORLD 1. 官方文档&#xff1a;CGAL-TUTORIALS 2. 所有CGAL头文件都在子目录中。所有CGAL类和函数都在命名空间中。类以大写字母开头&#xff0c;全局函数以小写字母开头&#xff0c;常量全部大写。 3. 几何图元&#xff0c;如点、线等都定义在内核Kernel中 #inc…

自动化测试方案设计和实现

编辑推荐: 本文主要介绍了几种测试类型需求&#xff0c;以及自动化测试方案设计和实现&#xff0c;希望对您的学习有所帮助。 本文来自于知乎&#xff0c;由火龙果软件Alice编辑、推荐。 如果对软件测试、接口、自动化、性能测试、测试开发、面试经验交流。感兴趣可以8101198…

测试方案模板

&#xff08;iwebshop项目&#xff09;测试方案 &#xff08;仅供参考&#xff09; 文档版本控制 文档版本号 日期 作者 审核人 说明 V1.0 2017/11/24 陈.. 创建文档 1. 概述 【软件的错误是不可避免的&#xff0c;所以必须经过严格的测试。通过对…

测试方案/测试计划/测试报告,经常弄混要怎么区分?

目录 前言 1、测试方案和测试计划的区别 2、测试方案和测试计划什么时候编写 3、测试方案 4、测试计划 5、测试报告 前言 测试方案和测试计划&#xff0c;测试报告几乎都是每个测试人员都必须掌握的。但有时经常搞混&#xff0c;特别是测试方案和测试计划。 1、测试方案…

自动化测试方案

自动化测试体系方案 方案1全编写代码流程 UI自动化&#xff1a; 使用python或java&#xff0c;配合selenium库及pytest框架做UI自动化测试。&#xff08;通过selenium的webdriver驱动&#xff0c;驱使浏览器&#xff09; 1. WebDriver API&#xff08;基于Java、Python&…

SpringBoot - 应用程序测试方案

文章目录 PreSpring Boot 中的测试解决方案测试 Spring Boot 应用程序初始化测试环境SpringBootTestSpringBootTest - webEnvironment RunWith 注解与 SpringRunner 执行测试用例使用 DataJpaTest 注解测试数据访问组件Service层和Controller的测试使用 Environment 测试配置信…

测试计划和测试方案有什么区别?

一、测试计划 1、测试计划是什么&#xff1f; 测试计划是组织管理层面的文件&#xff0c;从组织管理的角度对一次测试活动进行规划。对测试全过程的测试范围、组织、资源、原则等进行规定和约束&#xff0c;并制定测试全过程各个阶段的任务分配以及时间进度安排&#xff0c;并…

测试方案的设计及模板

测试方案设计及模板 测试方案设计概括xx测试方案_模板1.引言2.测试策略3.测试设计4.测试资源5.输出文档6.修订记录推荐书籍 测试方案设计概括 xx测试方案_模板 1.引言 1.1目的 根据需要实现的需求与软件的设计架构&#xff0c;设计满足测试目标的方案&#xff0c;用来指导测试…

软件测试方案设计

文章目录 1、软件框架2、测试方案设计2.1、测试覆盖2.2、功能测试和压力测试2.3、自动化测试2.4、持续集成 1、软件框架 站在软件的角度&#xff0c;一个系统通常可以分为以下四个层次&#xff1a; 应用软件层(app layer)。用户重点自己开发的应用代码&#xff0c;例如我们的运…

又发现个新的全网资源搜索神器

平常用谷歌百度搜资源一个个翻很费劲&#xff0c;这里分享几个最新可用的全网网盘资源搜索神器&#xff0c;在公众号苏生不惑后台回复神器 获取软件下载地址。 混合盘 这个app聚合搜索多个网盘资源&#xff0c;可从数十个网盘搜索网站中检索出你需要的资源&#xff0c;app非常简…

magnetX,资源搜索神器!老司机快上车!

magnetX 中文版是一款非常好用的资源搜索神器&#xff0c;界面干净简洁并且不会有弹窗。而且可以通过关键字搜索&#xff0c;或者网址过滤这两种方式快速找到你想要的资源&#xff0c;并且还能配合WebTorrent在线播放&#xff0c;还可以配合下载工具进行一键下载资源&#xff0…

【森林SOU】小巧绿色版搜索神器

种子搜索神器是一款基于P2P技术的资源搜索软件&#xff0c;搜索神器有很多&#xff0c;其实下面为大家带来的这个搜索工具就很不错&#xff0c;小巧功能强大无需安装&#xff0c;这里有着十分全面的资源可以自由搜索&#xff0c;下载也没有什么速度限制&#xff0c;十分便捷&am…

2014 三款强大搜片神器 | 各种视频资源 | 电影电视剧搜索

您还在百度上搜索电影吗&#xff0c;即浪费时间有累眼睛&#xff0c;并且还经常找到的不是自己想要的资源(某位仁兄下来了几个G的葫芦娃~~)。 亲们的福音来了。三款超强大的搜索下载看片软件很适合你。 只要有了他们&#xff0c;找神马资源都会变的轻松&#xff0c;So Easy~~ 下…

分享几个好用的百度网盘搜索引擎

与大家分享几个好用的网盘搜索神器&#xff0c;方便大家搜索百度云网盘分享的资源文件。&#xff08;已测试&#xff0c;目前都可用&#xff09; 一、 盘搜 http://www.pansou.com/ 网站简洁&#xff0c;搜索即可出来结果&#xff0c;点击搜索结果就能跳转。 二、 飞鱼盘搜 h…

吊打本地搜索神器everthing,最快 最强的电脑本地搜索神器!

Windows的小伙伴应该都对Windows资源管理器 自带的『文件搜索功能』说一句“垃圾” 全盘搜索一个文件居然需要几十秒 而为了解决Windows搜索慢的问题 不少小伙伴应该都用过或者听说过『Everything』这个软件 不论磁盘空间多大、存有多少文件 Everything都能以毫秒级的速度搜…

推荐一些非常好用的网盘搜索神器

网盘工具的兴起&#xff0c;大多数的用户会在网盘上分享自己的资源。那么如何快速的在网盘上找到你想要的资源呢 ? 而今天推荐的就是一些网盘搜索引擎&#xff0c;它可以使我们快速搜搜索到自己想要的资源&#xff0c;从而提高了整体的搜索效率。下面将介绍一些搜索引擎&#…

easySearch:一款聚合资源搜索神器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 大家好&#xff0c;我是免费哥。 今天给大家带来的资源是&#xff1a;资源聚合搜索神器easySearch 资料简介 这是一款Chrome浏览器插件&#xff0c;支持主流链接…

资源搜索引擎

1.DogeDoge搜索引擎&#xff1a;https://www.dogedoge.com/ 不追踪&#xff0c;不误导。 2.秘迹搜索&#xff1a;https://mijisou.com/ 这是一个 不追踪 你的搜索引擎 3.小白盘&#xff1a;https://www.xiaobaipan.com/ 4.云盘精灵&#xff08;资源搜索&#xff09;&#xf…

各大网盘搜索资源神器免费送!!!

文章目录 百度网盘资源搜索神器系列1、盘多多&#xff1a;http://www.panduoduo.net/2、盘搜&#xff1a;http://www.pansou.com/3、盘搜搜&#xff1a;http://www.pansoso.com/ 百度网盘资源搜索神器系列 给经常玩百度网盘的玩家推荐微信公众号&#xff1a;性感的小君君 提供…