【发布时间】:2019-06-13 13:38:51
【问题描述】:
我正在尝试使用 CGAL 库来显示 2D Delaunay 三角剖分,如示例 here
我的代码如下所示:
#include <iostream>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
#include <CGAL/draw_triangulation_2.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Point Point;
int main(void){
Point a(1,1), b(2,1), c(2,2), d(1,2);
Triangulation T;
T.insert(a);
T.insert(b);
T.insert(c);
T.insert(d);
CGAL::draw(T);
return 0;
}
当我尝试使用g++ -o cgalTest.exe cgalTest.cpp -lCGAL -lgmp 编译此代码时,程序编译成功,但在运行时我得到Impossible to draw because CGAL_USE_BASIC_VIEWER is not defined
通过谷歌搜索,我发现有人建议使用g++ -o cgalTest.exe cgalTest.cpp -lCGAL -lgmp -DCGAL_USE_BASIC_VIEWER,这会在编译时产生以下错误:/usr/include/CGAL/Qt/Basic_viewer_qt.h:30:10: fatal error: QApplication: No such file or directory #include <QApplication>
我使用的是 ubuntu 19.04,所以我使用 sudo apt-get install libcgal-dev 和 sudo apt-get install libcgal-qt5-dev 安装了 CGAl
我也尝试安装sudo apt-get install libqt5svg5-dev libqt5opengl5-dev以解决错误,但无济于事。
我需要安装额外的库吗?也许编译必须以不同的方式进行?
谢谢
【问题讨论】:
-
Manu qt5 库是必需的:Core、Gui、Help、OpenGL、Script、ScriptTools、Svg、Widgets、qcollectiongenerator(带有 sqlite 驱动插件)和 Xml。参看。安装手册doc.cgal.org/latest/Manual/installation.html#title25。您还需要与 CGAL_Qt5 链接
-
我检查过,我已经安装了
libqt5core5a libqt5gui5 libqt5help5 libqt5script5 libqt5scrpttools5 libqt5xml5和libqt5widgets5。我也尝试链接 CGAL_Qt5 但错误仍然存在。 -
您使用的是什么版本的 CGAL?图形示例是相对较新的(4.13 IIRC)。此外,您应该使用 cmake 而不是自己做所有事情。它将使收集所有依赖项变得更加容易,如果您缺少任何依赖项,则会警告您。
-
我应该使用 4.14 版。不是 100% 确定,因为我使用
sudo apt-get install libcgal-dev libcgal-qt5-dev安装了 cgal。有什么方法可以确认版本吗?您建议使用 cmake。您将如何使用 cmake 编译上述项目?