[CGAL] CGAL 5.0.2的使用、编译例子(Windows+VS2017)

原文链接,不定时更新,此文档为第一版,之后不再同步。

前言

CGAL只是一个头文件库(从5.0版本开始),这意味着CGAL无需编译,只需安装好CGAL的依赖项即可。CGAL主要依赖项是boost。如果需要使用CGAL的可视化功能,则还需要Qt库。

CGAL5.0.2+Windows+VS17

方法一:用CGAL安装器安装

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

安装Boost

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

  1. 下载boost_1_71_0-msvc-XX.Y-64.exe(VS2015选择XX.Y=14.0,VS2017选择14.1,VS2019选择14.2),这里安装VS2017的
  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

安装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)进入目录

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. 打开生成的sln文件(目录位置:D:\local\CGAL-5.0.2\examples\Triangulation_2\build
  2. 选择要编译的例子: 将draw_triangulation_2设置为启动项
  3. 运行即可
    在这里插入图片描述

在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版本)
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

  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_interval

	return 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},将环境变量改成这个
    在这里插入图片描述

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

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

因此,Vckpg方法适合于只安装CGAL的核心模块(不包含qt可视化功能),常用于快速搭建开发环境,不使用Qt可视化功能的情况

使用vcpkg安装报错可参照此文章:https://geodoer.blog.csdn.net/article/details/107832878

安装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工程。即可打开工程并编译
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页