CGAL的编译以及在VS中的使用

2023-07-08 14:21:47 浏览数 (2)

CGAL的编译以及在VS中的使用 在被CGAL长久的折磨了两三周 在学习过程中有好几次库都出现了问题 所以打算重新更换一下版本 CGAL可以说是学习这么久以来见过最离谱(ex)的环境配置,期间出了好几次问题,主要各个配置关联性太强了 稍有一步有问题 编译就很容易报错 所以想记录一下配置过程

也供大家参考

安装依赖库 安装boost Boost是CGAL的强制依赖库

下载Boost: Boost下载地址:https://www.boost.org/

这里我下载的是1_71_0

其次注意VS版本的问题 这里我使用的是vs2015

VS2015选择XX.Y=14.0 VS2017选择14.1 VS2019选择14.2

然后无脑傻瓜操作进行安装 (建议整个配置里的所有文件都放在一个文件夹里)

接下来设置环境变量

○ BOOST_LIBRARYDIR = D:localboost_1_71_0lib64-msvc-14.1 ○ Boost_INCLUDEDIR = D:localboost_1_71_0 ○ PATH = D:localboost_1_71_0lib64-msvc-14.1

然后是一个比较关键的步骤就是对Boost进行编译(这部最好做完整)

cmd r 进入命令行 cd到boost的文件夹内

在该目录下运行bootstrap.bat 运行后会产生不b2.exe等文件

Boost非常大 建议只编译CGAL需要的依赖库

b2.exe --with-system --with-thread

安装CMake 下载网址:http://www.cmake.org/cmake/resources/software.html

无脑安装下一步(最好也是放在相同文件夹目录)

如果下一步CGAL下的版本很新的话 建议这里也下很新的

安装CGAL 下载地址:https://github.com/CGAL/cgal/releases

这里需要注意的一个点是 后面的CMake生成的build的文件夹中 如果是新版本的话 会不生成bin文件 目前原因未知

这里我下载的版本是4.13.2

还有一个点是 如果是exe文件进行安装 极大可能在自动配置环境变量后会出现应用奔溃的情况

建议还是手动配置

PATH = D:localCGAL-4.13.2auxiliarygmplib CGAL_DIR = D:localCGAL-4.13.2 目的是让CMake能找到CGAL

安装Qt 实际上Qt的配置不是必须的 有很多方法其实可以实现可视化这个功能

下载地址:https://www.qt.io/download

应该是需要注册 也可以找镜像

添加环境变量

QTDIR = D:localQtQt5.13.1

帮助cmake找到Qt

PATH = D:localQtQt5.13.15.13.1msvc2017_64bin

在vs中安装Qt插件 打开vs 找到工具中的插件及其更新 找到Qt的拓展 安装Qt Visual Studio Tools

安装重启后 会在工具栏看到Qt VS Tools选项

工具栏中打开Qt VS Tools–>Qt Options–>Add

添加msvc_2017_64 = D:localQtQt5.13.15.13.1msvc2017_64

编译示例 进入目录(cmd命令)

D:localCGAL-4.13.2> cd examplesTriangulation_2 D:localCGAL-4.13.2examplesTriangulation_2> mkdir build D:localCGAL-4.13.2examplesTriangulation_2> cd build D:localCGAL-4.13.2examplesTriangulation_2build> cmake-gui …

打开CMake界面后(一个非常变态的东西出现了)

在where is the source code中输入:D:localCGAL-4.13.2examplesTriangulation_2

下一栏输入:D:localCGAL-4.13.2examplesTriangulation_2build

然后Configure 下选择vs版本和系统版本

done结束 再选择Generate

然后打开在Triangulation_2下生成的.sln文件(位置:D:localCGAL-4.13.2examplesTriangulation_2build)

将draw_triangulation_2设置为启动项

点击运行

在VS中使用CGAL库 CMake build

如图继续进行Configue和Generate操作

然后检查一下CGAL文件夹目录中是否有build文件夹

接下来打开生成的CGAL.sln文件

在debug以及release模式下都运行一下(这里建议注意一下自己写的系统版本)

不需要关注拒绝访问的问题 只要运行后显示成功生成了6个就没问题

然后看是否在lib文件夹中有新生成的dll文件 如果有 那么截至目前这一步还没有问题

新建工程 打开项目属性

在VC 的包含目录添加

D:localboost_1_71_0(安装boost_1_71_0的目录)

D:compilecgalauxiliarygmpinclude(gmp的include目录,这个在安装CGAL的auxiliary目录下找)

D:compilecgalinclude(CGAL的include目录)

D:compilecgalbuildincludeCGAL(编译生成CGAL的include目录)

在VC 目录的的库目录中添加:

D:compilecgalbuildlib(编译生成CGAL的库目录)

D:compilecgalauxiliarygmplib(gmp的库目录)

D:localboost_1_71_0libs(boost的库目录)

在链接器的输入中添加:

libgmp-10.lib libmpfr-4.lib kernel32.lib user32.lib CGAL_Core-vc140-mt-gd-4.11.lib CGAL_ImageIO-vc140-mt-gd-4.11.lib CGAL-vc140-mt-gd-4.11.lib

然后可以试运行一下CGAL-Hello World

#include #include<CGAL/Simple_cartesian.h> #include<CGAL/Exact_predicates_exact_constructions_kernel.h>

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;;

//typedef CGAL::Simple_cartesian Kernel; //笛卡尔坐标系下的对象 typedef Kernel::Point_2 Point_2; //顶点 typedef Kernel::Segment_2 Segment_2; //直线

int main() { Point_2 p(0, 0.3), q, r(2, 0.9); { q = Point_2(1, 0.6); std::cout << (CGAL::collinear(p, q, r) ? “collinearn” : “not collinearn”); } { std::istringstream input(“0 0.3 1 0.6 2 0.9”); input >> p >> q >> r; std::cout << (CGAL::collinear(p, q, r) ? “collinearn” : “not collinearn”); } { q = CGAL::midpoint(p, r); std::cout << (CGAL::collinear(p, q, r) ? “collinearn” : “not collinearn”); }

return 0; } 作者:李丑图 https://www.bilibili.com/read/cv18834482/ 出处:bilibili

0 人点赞