CGAL是Computational Geometry Algorithms Library(计算几何算法库)的缩写,C++的高效算法库。

笔者编译的是CGAL 5.2版本。

说明:3月18号官方发布了5.2.1版本,对5.2版本进行了bug修复,具体编译和使用方法大同小异,建议大家使用5.2.1版本。

一、重要版本节点

CGAL 4.9:编译示例时,可以只使用头文件,不需要编译和连接库。但是为了生成一些配置文件,仍然需要CMake一下。

CGAL 4.12:header-only library 不需要CMake就可以使用CGAL,引用头文件即可。(CGAL的模板有点令人头大)同时,添加了新的工具包:Classification,可用于点云语义分割。

CGAL 5.0:仅引用头文件使用CGAL是默认方式。可在CMake配置中修改使用方式。因此,只需要下载CGAL-5.2-library.zipSTL、对应的BoostGMPMPFR,以及算法所需的库,就可以使用CGAL了。算法的demo在CGAL-5.2-library.zip中。

二、下载

2.1 下载地址

https://github.com/CGAL/cgal/releases  下载红色框的两个压缩包。

①CGAL-5.2.zip包括三个绿色框的文件:说明文档,demo和头文件库(如果不需要说明文档和demo,可以下载CGAL-5.2-library.zip);

②GMP and MPFR libraries, for Windows 64bits.zip是两个必需依赖库。

2.2 复制依赖库GMPMPFR

将GMP and MPFR libraries解压后的gmp文件夹复制到 CGAL-5.2\auxiliary 文件夹中。

2.3 第三方库

官网文档:https://doc.cgal.org/latest/Manual/index.html

2.3.1 必需的第三方库

(1)Standard Template Library (STL)

C++的基础库,安装VS和C++时就有

(2)Boost

下载地址:https://sourceforge.net/projects/boost/files/boost-binaries/

CGAL 5.2对应boost_1_71_0-msvc-XX.Y-64.exe(XX.Y = 14.0 for VC 2015, XX.Y = 14.1 for 2017, XX.Y = 14.2 for VC 2019),可在VS的帮助-关于Microsoft Visual Studio中查看VC版本。

参照 https://doc.cgal.org/latest/Manual/windows.html 第2.1节

(3)GNU Multiple Precision Arithmetic (GMP) and GNU Multiple Precison Floating-Point Reliably (MPFR) Libraries

libCGAL、libCGAL_Core和libCGAL_Qt5需要。因为这两个库对C++的支持不完善,所以CGAL提供了预编译版本。参照2.2.

2.3.2 可选的第三方库

有了这三个必需库就可以编译出CGAL了。但是应对不同的需求,部分示例中有用到其它库。具体参见:https://doc.cgal.org/latest/Manual/thirdparty.html 和 https://doc.cgal.org/latest/Manual/configurationvariables.html

注①:对于libCGAL_ImageIO来说,ZLIB是必需的(没有ZLIB,CGAL也可以编译成功。这么说有点别扭,文字狗头)。编译参见:https://blog.csdn.net/xinjiang666/article/details/114541563

注②:笔者所用Qt为5.12.5版本。

注③:使用v2021.1.1版本的TBB(oneTBB 2021.1.1——oneapi-tbb-2021.1.1-win.zip)会报“file STRINGS file "…/oneapi-tbb-2021.1.1-win/include/tbb/tbb_stddef.h" cannot be read.”的错误,因为根本没有tbb_stddef.h这个文件。所以可以采用v2020.3版本(Threading Building Blocks 2020 Update 3——tbb-2020.3-win.zip)

2.4 设置环境变量

设置环境变量,便于CMake找到相关路径,例如:

变量

BOOST_INCLUDEDIR

D:\OSGeo4W64\boost_1_71_0

BOOST_LIBRARYDIR

D:\OSGeo4W64\boost_1_71_0\lib64-msvc-14.1

CGAL_DIR

F:\CGAL-5.2

GMP_LIBRARY

F:\CGAL-5.2\auxiliary\gmp\lib

ZLIB_LIBRARY

D:\OSGeo4W64\zlib\lib

Path

%BOOST_INCLUDEDIR%

%BOOST_LIBRARYDIR%

%GMP_LIBRARY%

%ZLIB_LIBRARY%

------------------------------ 下面记录的是编译*.lib和*.dll的过程。------------------------------

三、CMake

设置源码路径为:F:/CGAL5.2/CGAL-5.2

设置构建路径为:F:/CGAL5.2/build

根据软件及环境按顺序单击。

所需库的路径如下:

勾选CGAL_HEADER_ONLY则编译为仅头文件库,不会有*.lib和*.dll。

修改CMAKE_INSTALL_PREFIX路径为:F:/CGAL5.2/install

设置ZLIB的相关路径

单击Configure,出现Configure done后,单击Generate,出现Generate done则表示完成。

四、VS编译

(1)VS2017打开 F:/CGAL5.2/build/CGAL.sln ,右击ALL_BUILD,生成。

(2)右击INSTALL,生成。成功后,在 F:/CGAL5.2/install 中生成bin、include、lib、share四个文件夹。

五、测试

分享给有需要的人,代码质量勿喷。

参照:https://doc.cgal.org/latest/Manual/devman_create_and_use_a_cmakelist.html

5.1 CMakeLists.txt

cmake_minimum_required(VERSION 3.1...3.20)project(Surface_mesh_Examples)#CGAL_Qt5 is needed for the drawing.
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt5)
if(CGAL_Qt5_FOUND)#required to use basic_vieweradd_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS)
endif()#create the executable of the application
create_single_source_cgal_program("draw_surface_mesh.cpp")if(CGAL_Qt5_FOUND)#link it with the required CGAL librariestarget_link_libraries(draw_surface_mesh PUBLIC CGAL::CGAL_Qt5)
endif()
#end of the file

5.2 draw_surface_mesh.cpp

#include <CGAL/Simple_cartesian.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/draw_surface_mesh.h>
#include <fstream>typedef CGAL::Simple_cartesian<double>                       Kernel;
typedef Kernel::Point_3                                      Point;
typedef CGAL::Surface_mesh<Point>                            Mesh;int main(int argc, char* argv[])
{Mesh sm1;std::ifstream in1("F:/testCGAL/sourceCode/pig.off");in1 >> sm1;CGAL::draw(sm1);return EXIT_SUCCESS;
}

5.3 CMake

将pig.off、CMakeLists.txt和draw_surface_mesh.cpp放在…/testCGAL/sourceCode文件夹中

源码路径:…/testCGAL/sourceCode

构建路径:…/testCGAL

Configure、Generate。

提示“Visual Leak Detector (VLD) is not found.”,不会影响程序运行。

5.4 VS2017编译

5.4.1 右击ALL_BUILD——生成。

错误:F:\CGAL5.2\install\include\CGAL/gmp.h(22): fatal error C1083: 无法打开包括文件: “gmp.h”: No such file or directory

解决:右击draw_surface_mesh——属性——C/C++——常规——附加包含目录——添加D:\CGAL_5.2.1\auxiliary\gmp\include

5.4.2 draw_surface_mesh设为启动项,右击缺少动态库

错误:提示缺少动态库

解决:将缺少的dll复制到exe目录下。

5.5 测试结果

修改:CGAL 5.2.1和VS2017编译好的库(Qt 5.12.5)

链接:https://pan.baidu.com/s/1RIlE5Pag34nvIK5xxw2GQw
提取码:i8fr

CGAL:Win10 + VS2017 编译 CGAL 5.2相关推荐

  1. win10 VS2017编译Audacity详细教程

    win10 VS2017编译Audacity详细教程 安装Visual Studio2017和git,这里不详细叙述,网上很多教程. 配置wxWidgets a.官网下载地址http://www.wx ...

  2. caffe2 01 caffe2 win10 vs2017编译(默认CPU版本)

    01 基本环境 win10 vs2017 git python3.5.3 cmake-gui(3.7.2) caffe2 github地址:https://github.com/caffe2/caff ...

  3. win10+VS2017编译配置boost_1_78_0

    1.编译boost库 1.1下载boost 下载官网地址:boost_1_78_0 注意,有时候会下载不全,下载之后检查一下 如果下载不完全,编译不能通过 1.2 解压 解压,一定要解压到一个指定文件 ...

  4. cntk 2.5 win10 vs2017 编译(Cpuonly)

    cntk编码风格还是很微软风格的.对于传统老微软程序员来说,研究cntk的代码,应该很有亲切感. 51cto上面有李金洪的两个cntk的讲座,其中一个是免费的.这两个讲座都很有价值.两个讲座各4小时. ...

  5. Win10下用VS2017编译live555

    Win7下使用VS2013编译live555 一.live555简介 live555是一个为流媒体提供解决方案的跨平台C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等 ...

  6. linux 编译cgal,CGAL - 计算几何算法库

    What is CGAL CGAL是一个强大的开源的计算几何算法库,全称是:Computational Geometry Algorithm Library. 提供了诸如:2D凸包,3D凸包,三角化等 ...

  7. win10+vs2017+caffe(crnn)编译过程记录(验证成功)

    一.准备工作 在windows下使用vs2017编译,使用cmake生成项目工程,caffe依赖很多第三方库,编译之前准备好,具体见下图: 二.生成工程 1.勾选advanced 2.blas选择op ...

  8. 如何在win10+VS2017环境下新建一个简单的WDF示例程序

    上一课我们在win10系统+VS2017开发环境下搭建了WDK驱动程序开发环境的搭建,详见我的博客[如何在win10+VS2017环境下安装USB驱动开发套件WDK],今天我们来尝试建立一个最简单的K ...

  9. Win10+VS2017+Ceres-Solver-1.13.0配置

    一.工作准备 VS 2017 Cmake Ceres-solover最新版以及早期版本 gflags glog Eigen 注:下载后的包如下图所示,解压缩所有包至合适位置,本文以"D:\P ...

  10. 解读帖子:结构化编译器前端 Clang 介绍(VS2017编译clang)

    因为需要提取出头文件或源文件的函数名列表和相应的函数参数类型,我想从已有的编译器中寻找函数调用,于是我找到了--结构化编译器前端 Clang 介绍 这个贴子折腾了我很久(还有几个开源项目我也没有搞定) ...

最新文章

  1. windows下安装nodejs、webpack及打包步骤
  2. nrf51822-提高nordic ble数据发送速率
  3. C#调用Python模块
  4. uni-app微信小程序登录授权
  5. 浅析java中clone()方法
  6. C++继承机制(一)——基本语法、三种继承方式、继承哪些数据
  7. Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!
  8. 计算机毕业设计中用Java实现在线考试系统
  9. python︱ collections模块(namedtuple/defaultdict/OrderedDict等)
  10. Python之路--协程/IO多路复用
  11. 解决mySQL数据库锁表问题。
  12. 小型超市管理系统的设计与实现 毕业设计-附源码011136
  13. 教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!
  14. 微信订阅号获取openid
  15. 长沙市取消职称英语和计算机,哪些城市已取消职称英语考试?
  16. linux gcc配置安装文件失败,安装一些环境时提示安装不成功帮一下看看什么情况(apt-get install gcc g++ ssh...
  17. 2016依然会给我惊喜,谢谢
  18. mysql数据库设计与应用答案智慧树_知到智慧树MySQL数据库设计与应用完整免费答案...
  19. Linux 系统查询处理器架构
  20. springMVC 自定义类型转换器

热门文章

  1. 经纬度计算距离公式(测地线距离)
  2. 八进制和十六进制转二进制
  3. 十六进制转二进制(转)
  4. 武汉大学计算机2019转专业,武汉大学可以转专业吗,武汉大学新生转专业政策
  5. Sopcast软件中凤凰卫视频道列表代码
  6. 计算机核心期刊新排名(八大学报)
  7. hadoop的filesplit
  8. BATH四巨头鼎立,中国云市场将走向何方?
  9. sqliteman安装出现E: Unable to locate package sqliteman 解决办法
  10. 使用阿里云Ubuntu搭建代理服务器