本文要點(diǎn)
- 確認(rèn)CGAL編譯安裝時生成了
libCGAL_Qt5.so,編譯安裝完后通過ls /usr/local/lib/libCGAL*查看,如果有則不用看下面的了 - 修改自己建的qt application項(xiàng)目中的.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條方法直接安裝和獲取安裝的版本,然后下載對應(yīng)版本的源碼,編譯安裝,這樣既能看源碼,又不會與過去未來沖突
- 解壓源碼進(jìn)入boost目錄執(zhí)行
./bootstrap.sh - 接著
./b2 -a -sHAVE_ICU=1 -j4 - 最后
sudo ./b2 install
- 解壓源碼進(jìn)入boost目錄執(zhí)行
注意:博主安裝ROS時依賴安裝了boost1.54版本,然后自己又源碼編譯安裝了boost1.54版本后,調(diào)用時出現(xiàn)了問題并解決
- 如果想編譯安裝其他版本的boost,除非你非常懂linux系統(tǒng),否則在執(zhí)行
make&&make install之前一定要先./configure –prefix=/usr來配置安裝位置,否則會與之前或日后apt-get install libboost-all-dev安裝的沖突,編程時會有難以找到的很玄乎的Bug出現(xiàn)
安裝MPFR、GMP、geomview
sudo apt-get install libgmp3-dev libmpfr-dev
sudo apt-get install geomview
安裝QT5
- 下載最新版本的對應(yīng)自己系統(tǒng)的版本的.run文件,修改權(quán)限+x,運(yùn)行傻瓜式安裝,這里不做詳細(xì)說明,記得把該勾選的不該勾選都勾上~
- 安裝完后打開
/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf和/usr/lib/x86_64-linux-gnu/qtchooser/default.conf將內(nèi)容替換為你安裝的qt的位置,博主的如下
/opt/Qt5.10.0/5.10.0/gcc_64/bin
/opt/Qt5.10.0/5.10.0/gcc_64/lib
有的人是如下配置的,不知道第二行配置有什么用,建議用博主這種,畢竟博主使用時沒發(fā)現(xiàn)什么異常
/opt/Qt5.10.0/5.10.0/gcc_64/bin
/opt/Qt5.10.0
安裝libQGLViewer
libQGLViewer安裝方法可以按照官網(wǎng)上的方法來安裝,要用到上面安裝的QT5
注意:解壓后記得到QGLViewer文件夾內(nèi)編譯安裝,不要在libQGLViewer文件夾內(nèi)編譯安裝,否則得到額庫文件是假的
安裝CGAL
- 下載最新版的CGAL并解壓進(jìn)入
- 打開
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根目錄運(yùn)行下列命令
mkdir build
cd build
cmake ..
make -j4
sudo make install
5.運(yùn)行ls /usr/local/lib/libCGAL*檢查是否有libCGAL_Qt5.so,不進(jìn)行2和3操作就不會產(chǎn)生這個文件,導(dǎo)致無法顯示3D圖
實(shí)例
- 新建Qt application項(xiàng)目
- 修改.pro文件中
QT += core gui xml opengl和添加LIBS += -lCGAL -lCGAL_Core -lgmp -lCGAL_Qt5 - 將
main.cpp內(nèi)容全部刪除,用如下替換,其中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
- 上面這段源碼也可以不在qt里面編譯,
vi test2.cpp,把代碼復(fù)制進(jìn)去,變通的使用如下命令編譯,運(yùn)行./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