安装测试CGAL和read_ply()

起因

想用CGAL做一些关于mesh的操作,我的上游输出是一个用PLY文件存储的surface mesh,我希望将其转换为CGAL的格式。经过Google发现,较新的CGAL版本带有read_ply()函数,而当前系统配套的CGAL版本并不支持,于是需要安装新的CGAL。How hard can it be?! 但是事实是,这花去了几乎一下午的时间。

本机系统

Ubuntu 18.04
cmake 3.16
Qt 5.9.5

clone repo

从CGAL的Github clone 到本地。
当前CGAL的版本是5.0.2,通过git checkout releases/CGAL-5.0.2切换到对应的tag上。

与本地project结合

在CGAL Github的页面上有INSTALL.md文件。内有如何将CGAL添加到本地project的方法。基本原理就是CGAL本身已经是header only的library了,所以只需要让cmake找到我们clone CGAL的位置即可。INSTALL.md内描述了如何运用cgal_create_cmake_script脚本生成一个CMakeLists.txt,并且指出在执行cmake时需要指定CGAL的具体位置。在cgal_create_cmake_script所生成的CMakeLists.txt最后,使用了一个名为create_single_source_cgal_program的cmake函数,该函数貌似只能创建具有一个源文件的target。在简单Google之后,发现其实create_single_source_cgal_program也可以指定多个源文件,只不过target名称会根据第一个指定的源文件进行配置。请参考这里

create_single_source_cgal_program生成的CMakeLists.txt作为模板,编写一个新的CMakeLists.txt文件如下

cmake_minimum_required(VERSION 3.16)
project( TestCGAL5 )

set(CMAKE_CXX_STANDARD 14)

set(CGAL_DIR /path/to/cgal)
find_package(CGAL REQUIRED QUIET OPTIONAL_COMPONENTS Core )

add_executable(TestCGAL5 main.cpp)

target_link_libraries(TestCGAL5 ${CGAL_LIBRARIES})

此时我们调用CMake时不再需要指定CGAL的位置。

增加Qt支持

用于测试的程序(附录)需要用到CGAL提供的draw()函数来绘制一个mesh,未对CMakeLists.txt做任何更改时,编译无问题,但运行时将会报出“Impossible to draw, CGAL_USE_BASIC_VIEWER is not defined.” 的错误。

于是在首个cpp文件内加入了如下代码(参考这里

#define CGAL_USE_BASIC_VIEWER

编译报错,报错内容与Qt相关。

这里真的要开始吐槽一下CGAL,文档真的是没有写如何正确的对Qt进行支持。

从文档里能找到的线索很有限,这里描述了CGAL需要使用到的Qt component。对于CMake,Qt有推荐的方式,参考这里。为了满足这些需求,除了Qt本身,某些系统库似乎也需要安装(参考这里这里

sudo apt-get install
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值