学习CGAL:编译第一个工程

2024-09-06 23:48

本文主要是介绍学习CGAL:编译第一个工程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

CGAL对现在的我来说是个新的东西,我对他的用法用途都一无所知。但从他的名字:The Computational Geometry Algorithms Library看起来,应该是和图形学算法相关的,因此我有很强的兴趣。
首先,我想跟着官方指引下载安装,并尝试运行起来第一个范例。

1.安装boost

CGAL强依赖于 Boost ,二进制库可以在SourceForge中找到。boost安装器会安装头文件和编译好的库,步骤如下

1.下载并运行安装器

例如安装boost版本是1.73,就对应boost_1_73_0-msvc-XX.Y-64.exe ,其中XX.Y = 14.0 意思是 VC 2015;XX.Y = 14.1 意思是 2017;XX.Y = 14.2 意思是 VC 2019。

2.选择一个合适的目录

例如我这里选择D:\dev\boost_1_73_0
在这里插入图片描述

3.添加环境变量:

库:

BOOST_LIBRARYDIR = D:\dev\boost_1_73_0\lib64-msvc-14.1

头文件:

BOOST_INCLUDEDIR = D:\dev\boost_1_73_0

dll:

PATH  = D:\dev\boost_1_73_0\lib64-msvc-14.1

安装CGAL

1.下载

从https://github.com/CGAL/cgal/releases下载CGAL-[Version]-Setup.exe

2.安装

额外选择安装CGAL范例和demoGMP和MPFR预编译库(暂时不是很理解)HTML手册
在这里插入图片描述
选择一个安装路径
在这里插入图片描述
让它直接设置好环境变量:
在这里插入图片描述
不过我这里最后提示环境变量没有设置好,要我手动设置,于是我只能手动设置它了
在这里插入图片描述

创建一个范例工程

填好路径:
在这里插入图片描述
配置时选好VS版本,然后x64
在这里插入图片描述
之后点击Generate,生成了不少文件:
在这里插入图片描述

尝试运行

打开Triangulation_2_Examples.sln
选一个项目试试,我选了这个terrain项目
在这里插入图片描述
其中只有一个terrain.cpp

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Projection_traits_xy_3.h>
#include <CGAL/Delaunay_triangulation_2.h>#include <fstream>typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Projection_traits_xy_3<K>  Gt;
typedef CGAL::Delaunay_triangulation_2<Gt> Delaunay;typedef K::Point_3   Point;int main()
{std::ifstream in("data/terrain.cin");std::istream_iterator<Point> begin(in);std::istream_iterator<Point> end;Delaunay dt(begin, end);std::cout << dt.number_of_vertices() << std::endl;return 0;
}

好像是用data/terrain.cin这个文件做输入,然后统计了些内容。

我看data文件夹在D:\dev\CGAL-5.0.2\examples\Triangulation_2\下,于是我将其拷贝到我的工程D:\dev\CGAL-5.0.2\examples\Triangulation_2\build下。
然后我用记事本方式打开terrain.cin看到:

1 2 3 1
4 5 6 1
1 2 3 1
7 8 9 1
3 5 6 1
7 8 3 1
9 6 7 1
5 6 3 1
4 3 8 1
5 5 8 1
7 4 2 1

运行程序后显示:
在这里插入图片描述
详细的意义后续学习。目前可以确定工程是可以编译并运行了。

(之后,如果要创建其他范例的工程,则就要再执行一遍本篇【创建一个范例工程】的步骤了)

这篇关于学习CGAL:编译第一个工程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

MyBatisX逆向工程的实现示例

《MyBatisX逆向工程的实现示例》本文主要介绍了MyBatisX逆向工程的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录逆向工程准备好数据库、表安装MyBATisX插件项目连接数据库引入依赖pom.XML生成实体类、

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui