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