ubuntu14下CGAL安裝+Qt5配置+3D可視化

本文要點(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安裝

  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條方法直接安裝和獲取安裝的版本,然后下載對應(yīng)版本的源碼,編譯安裝,這樣既能看源碼,又不會與過去未來沖突
    • 解壓源碼進(jìn)入boost目錄執(zhí)行./bootstrap.sh
    • 接著./b2 -a -sHAVE_ICU=1 -j4
    • 最后sudo ./b2 install

注意:博主安裝ROS時依賴安裝了boost1.54版本,然后自己又源碼編譯安裝了boost1.54版本后,調(diào)用時出現(xiàn)了問題并解決

  1. 如果想編譯安裝其他版本的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

  1. 下載最新版本的對應(yīng)自己系統(tǒng)的版本的.run文件,修改權(quán)限+x,運(yùn)行傻瓜式安裝,這里不做詳細(xì)說明,記得把該勾選的不該勾選都勾上~
  2. 安裝完后打開/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

  1. 下載最新版的CGAL并解壓進(jìn)入
  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根目錄運(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í)例

  1. 新建Qt application項(xiàng)目
  2. 修改.pro文件中QT += core gui xml opengl和添加LIBS += -lCGAL -lCGAL_Core -lgmp -lCGAL_Qt5
  3. 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
  1. 上面這段源碼也可以不在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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容