本文要点
- 确认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安装
- 考虑到以前安装其它东西时依赖安装过boost,所以使用
dpkg -S /usr/include/boost/version.hpp
命令查看安装的boost的版本,如果没安装过,建议使用apt-get install libboost-all-dev
命令直接安装,这样不需要深入配置,CMakeList.txt文件中的find_package能直接找到boost,遵循这条方案则不用看下面的2和3 - 如果还是想源码编译安装boost,建议先按照第1条方法直接安装和获取安装的版本,然后下载对应版本的源码,编译安装,这样既能看源码,又不会与过去未来冲突
- 解压源码进入boost目录执行
./bootstrap.sh
- 接着
./b2 -a -sHAVE_ICU=1 -j4
- 最后
sudo ./b2 install
- 解压源码进入boost目录执行
注意:博主安装ROS时依赖安装了boost1.54版本,然后自己又源码编译安装了boost1.54版本后,调用时出现了问题并解决
- 如果想编译安装其他版本的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
- 下载最新版本的对应自己系统的版本的.run文件,修改权限+x,运行傻瓜式安装,这里不做详细说明,记得把该勾选的不该勾选都勾上~
- 安装完后打开
/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
- 下载最新版的CGAL并解压进入
- 打开
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)
- 打开
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)
- 在CGAL根目录运行下列命令
mkdir build
cd build
cmake ..
make -j4
sudo make install
5.运行ls /usr/local/lib/libCGAL*
检查是否有libCGAL_Qt5.so
,不进行2和3操作就不会产生这个文件,导致无法显示3D图
实例
- 新建Qt application项目
- 修改.pro文件中
QT += core gui xml opengl
和添加LIBS += -lCGAL -lCGAL_Core -lgmp -lCGAL_Qt5
- 将
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;
}
- 上面这段源码也可以不在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