ubuntu14下CGAL安装+Qt5配置+3D可视化

本文要点

  • 确认CGAL编译安装时生成了libCGAL_Qt5.so,编译安装完后通过ls /usr/local/lib/libCGAL*查看,如果有则不用看下面的了
  • 修改自己建的qt application项目中的.pro文件中QT += core gui xml opengl和添加LIBS += -lCGAL -lCGAL_Core -lgmp -lCGAL_Qt5

展开

Boost安装

  1. 考虑到以前安装其它东西时依赖安装过boost,所以使用dpkg -S /usr/include/boost/version.hpp命令查看安装的boost的版本,如果没安装过,建议使用apt-get install libboost-all-dev命令直接安装,这样不需要深入配置,CMakeList.txt文件中的find_package能直接找到boost,遵循这条方案则不用看下面的2和3
  2. 如果还是想源码编译安装boost,建议先按照第1条方法直接安装和获取安装的版本,然后下载对应版本的源码,编译安装,这样既能看源码,又不会与过去未来冲突
    • 解压源码进入boost目录执行./bootstrap.sh
    • 接着./b2 -a -sHAVE_ICU=1 -j4
    • 最后sudo ./b2 install

注意:博主安装ROS时依赖安装了boost1.54版本,然后自己又源码编译安装了boost1.54版本后,调用时出现了问题并解决

  1. 如果想编译安装其他版本的boost,除非你非常懂linux系统,否则在执行make&&make install之前一定要先./configure –prefix=/usr来配置安装位置,否则会与之前或日后apt-get install libboost-all-dev安装的冲突,编程时会有难以找到的很玄乎的Bug出现

安装MPFR、GMP、geomview

sudo apt-get install libgmp3-dev libmpfr-dev
sudo apt-get install geomview

安装QT5

  1. 下载最新版本的对应自己系统的版本的.run文件,修改权限+x,运行傻瓜式安装,这里不做详细说明,记得把该勾选的不该勾选都勾上~
  2. 安装完后打开/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf/usr/lib/x86_64-linux-gnu/qtchooser/default.conf将内容替换为你安装的qt的位置,博主的如下
/opt/Qt5.10.0/5.10.0/gcc_64/bin
/opt/Qt5.10.0/5.10.0/gcc_64/lib

有的人是如下配置的,不知道第二行配置有什么用,建议用博主这种,毕竟博主使用时没发现什么异常

/opt/Qt5.10.0/5.10.0/gcc_64/bin
/opt/Qt5.10.0

安装libQGLViewer

libQGLViewer安装方法可以按照官网上的方法来安装,要用到上面安装的QT5
注意:解压后记得到QGLViewer文件夹内编译安装,不要在libQGLViewer文件夹内编译安装,否则得到额库文件是假的

安装CGAL

  1. 下载最新版的CGAL并解压进入
  2. 打开cgal-releases-CGAL-4.13/Installation/CMakeLists.txt这个文件并找到find_package(Qt5 COMPONENTS Core Widgets Xml OpenGL Gui REQUIRED),在这一行之前添加如下配置,其中第一行Qt5的位置改成你自己的位置
set(QT_CMAKE_DIR /opt/Qt5.10.0/5.10.0/gcc_64/lib/cmake)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5)
find_package(Qt5 COMPONENTS Core Widgets Xml OpenGL Gui REQUIRED)

如果不行则用下面的代码

set(QT_CMAKE_DIR /opt/Qt5.10.0/5.10.0/gcc_64/lib/cmake)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5Core)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5Widgets)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5Xml)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5OpenGL)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5Gui)
find_package(Qt5 QUIET COMPONENTS OpenGL Svg Xml)
find_package(Qt5Core REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Gui REQUIRED)
  1. 打开cgal-releases-CGAL-4.13/Installation/cmake/modules/CGAL_SetupCGAL_Qt5Dependencies.cmake这个文件并找到find_package(Qt5 QUIET COMPONENTS OpenGL Svg Xml),在这一行之前添加如下配置,其中第一行Qt5的位置改成你自己的位置
set(QT_CMAKE_DIR /opt/Qt5.10.0/5.10.0/gcc_64/lib/cmake)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5)
find_package(Qt5 QUIET COMPONENTS OpenGL Svg Xml)

如果不行则用下面的代码

set(QT_CMAKE_DIR /opt/Qt5.10.0/5.10.0/gcc_64/lib/cmake)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5Xml)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5Svg)
list(APPEND CMAKE_MODULE_PATH ${QT_CMAKE_DIR}/Qt5OpenGL)
find_package(Qt5 QUIET COMPONENTS OpenGL Svg Xml)
find_package(Qt5Xml REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Svg REQUIRED)
  1. 在CGAL根目录运行下列命令
mkdir build
cd build
cmake ..
make -j4
sudo make install

5.运行ls /usr/local/lib/libCGAL*检查是否有libCGAL_Qt5.so,不进行2和3操作就不会产生这个文件,导致无法显示3D图

实例

  1. 新建Qt application项目
  2. 修改.pro文件中QT += core gui xml opengl和添加LIBS += -lCGAL -lCGAL_Core -lgmp -lCGAL_Qt5
  3. main.cpp内容全部删除,用如下替换,其中data/cross.off文件在cgal-releases-CGAL-4.13/Polyhedron/examples/Polyhedron/data/,自行变通修改
#define CGAL_USE_BASIC_VIEWER
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/Polyhedron_iostream.h>
#include <CGAL/draw_polyhedron.h>
#include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel  Kernel;
typedef CGAL::Polyhedron_3<Kernel>                       Polyhedron;
int main(int argc, char* argv[])
{
  Polyhedron P;
  std::ifstream in1((argc>1)?argv[1]:"data/cross.off");
  in1 >> P;
  CGAL::draw(P);
  return EXIT_SUCCESS;
}
image.png
  1. 上面这段源码也可以不在qt里面编译,vi test2.cpp,把代码复制进去,变通的使用如下命令编译,运行./a.out时记得把data/cross.off文件放好
g++ test2.cpp -Wl,-rpath,/opt/Qt5.10.0/5.10.0/gcc_64/lib -lCGAL -lCGAL_Core -lgmp -lCGAL_Qt5 -L/opt/Qt5.10.0/5.10.0/gcc_64/lib -lQt5OpenGL -lQt5Widgets -lQt5Gui -lQt5Xml -lQt5Core -lGL -lpthread -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -I../../cgal/test -I. -I/opt/Qt5.10.0/5.10.0/gcc_64/include -I/opt/Qt5.10.0/5.10.0/gcc_64/include/QtOpenGL -I/opt/Qt5.10.0/5.10.0/gcc_64/include/QtWidgets -I/opt/Qt5.10.0/5.10.0/gcc_64/include/QtGui -I/opt/Qt5.10.0/5.10.0/gcc_64/include/QtXml -I/opt/Qt5.10.0/5.10.0/gcc_64/include/QtCore -I. -isystem /usr/include/libdrm -I. -I/opt/Qt5.10.0/5.10.0/gcc_64/mkspecs/linux-g++ 

其它

如果还有问题,参考这里,把该安装的不该安装的都安装了,再试一下

参考资料
https://blog.csdn.net/dumpdoctorwang/article/details/81163702

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容