CGAL 安装

总结安装 CGAL 的步骤和错误解决方法。


Windows 中安装 CGAL

官方安装流程:https://doc.cgal.org/5.1.2/Manual/windows.html

Windows 中 CGAL 提供了 cgal-version-setup.exe 安装程序,直接安装即可。不过要首先安装 Boost 和 Qt5 这两个依赖库,其余的依赖库会在 CGAL 安装时附带自动装上。

安装 Boost

Windows 中也提供了 exe 安装程序。下载任意版本安装即可,例如 1.71.0。安装后建议添加几个路径到环境变量中:

BOOST_LIBRARYDIR = C:\dev\libboost_1_71_0\lib64-msvc-14.2
BOOST_INCLUDEDIR = C:\dev\libboost_1_71_0

并把相应的 bin 路径添加到系统的 Path 中:

C:\dev\libboost_1_71_0\lib64-msvc-14.2

注:这个 lib64-msvc-14.2 对应的其实就是 Visual Studio 2019 版本(MSVC 编译器版本和 Visual Studio 版本对照可参考:https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B)。

安装 Qt 5

中文说明:https://blog.csdn.net/u012670181/article/details/105600202?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

以 Qt5.14.2 为例,下载安装程序后,安装到默认路径。安装时,只选择几个和 MSVC 相关的选项即可,例如 MSVC 15, 17 (x86, x64) 以及 MingGW (可选),其余不用装。

安装后,同样建议设置相关路径:

QTDIR=C:\dev\Qt\Qt5.14.2

并把如下路径添加到系统的 Path 中:

C:\dev\Qt\Qt5.14.2\msvc2017_64\bin

从 CGAL 5.0 开始 CGAL 是 header-only 的了。不过还是可以编译 CGAL 并且用以前的老方法在 CMakeLists 中使用。

在 Visual Studio 2019 中添加 Qt-tool

参考这个文档:https://www.jianshu.com/p/1db7fbe407f8

Linux 中安装 CGAL

安装老版本 CGAL 4.11

CGAL 4.11 Manual: https://doc.cgal.org/4.11/Manual/tutorials.html

在 Ubuntu 下最简单的安装方法是:

sudo apt-get install libcgal-dev

不过在 Ubuntu 16/18 中,你还需要安装 CGAL-Qt 包:

sudo apt-get install libcgal-qt5-dev
sudo apt-get install libqt5svg5-dev

其中第二个包是为了解决这里列出的一个有关 qt 的问题:https://stackoverflow.com/questions/54352145/how-do-you-install-cgal-with-qt5-on-ubuntu-1804

注意:经在 Ubuntu 18.04 中测试,这种安装方法只能安装 CGAL 4.11 版本,这版本实在有点老。

安装新版本 CGAL 5.1.1

参考:https://doc.cgal.org/latest/Manual/installation.html

首先安装依赖库:

sudo apt-get install libboost-all-dev libcgal-qt5-dev libqt5svg5-dev

有时候可能还需要 gmp 等几个特别的库,不过你的系统很可能已经安装过了。

然后,从 CGAL repo 下载 CGAL-5.1.1.zip 源码。接着用下面方法编译 CGAL 以及一个例子:

cd $HOME/CGAL-5.1.1
mkdir build
cd build
cmake -DCGAL_HEADER_ONLY=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALLED_PREFIX=../install ..
make
make install

# Build some example
cd examples/Triangulation_2
mkdir build && cd build
cmake -DCGAL_DIR=$CMAKE_INSTALLED_PREFIX/lib/CGAL -DCMAKE_BUILD_TYPE=Release ..
make                                                                           

注意:

  • 如果编译例子时遇到了错误(笔者在 Ubuntu 18 中遇到了),那么将 CGAL_DIR 修改为 CGAL-5.1.1.zip 解压后的根目录,即$HOME/CGAL-5.1.1,而不是上面的$CMAKE_INSTALLED_PREFIX/lib/CGAL。不过,不同系统下,后者这个路径有时候是对的,有时候不对,还不清楚为什么。

Mac 安装 CGAL

首先,直接按照CGAL官网上所示的 brew install cgal 是可以安装最新版本的 CGAL 的(笔者显示的是 CGAL 5.0.2 版本),不过它并不包含和 Qt5 相关的部分。即,用户无法编译和渲染相关的所有代码。经过检查,brew 安装的 CGAL 确实不包含 Qt5 的部分。虽然官网上给出可以接着使用 brew install cgal-qt5安装 Qt5 相关的部分,但是笔者亲测 了,显示根本找不到 cgal-qt5 。本文档主要介绍的是从源码安装 CGAL 5.0.2。

和 Ubuntu Linux 相比,Mac 比较烦的是 Qt5 的安装和配置。

Prerequisites

  • cmake
  • boost
  • qt5
  • libqglviewer

  • gmp
  • mpfr

上面除了 cmake 外,剩下的安装方法全部是 brew install XXX。最后两个库是 CGAL 依赖的 floating 库,无脑安装即可。cmake 的话虽然也可以用 brew install,但是不包含 cmake-GUI。如果要顺带安装 cmake-GUI,使用 brew cask install cmake

NOTE:新版本的 CGAL 中似乎不需要安装 libqglviewer 了(而且它也没办法通过 brew install 安装了)。

有关 Qt5 的设置

参考:https://3d.bk.tudelft.nl/ken/en/2016/05/18/configuring-cgal-with-qt5-and-qglviewer-on-mac.html

注意,安装 Qt5 后,需要再链接一下 Qt5 安装路径到常规路径 /usr/local。这是因为 Qt5 在 Mac 中通常默认安装在 /usr/local/Cellar/qt5 这种路径下,经常显示找不到。使用如下几个命令重新链接一下即可:

brew link --force qt5
sudo ln -s /usr/local/Cellar/qt/5.14.1/mkspecs /usr/local/mkspecs
sudo ln -s /usr/local/Cellar/qt/5.14.1/plugins /usr/local/plugins

如果不这么做,接下来的编译过程中会遇到错误,总结在下文中。

安装 CGAL

CGAL官网下载 CGAL-5.0.2.tar.xz 文件,使用 tar xf CGAL-5.0.2.tar.xz解压后,前进到 CGAL-5.0.2 路径下。然后,直接cmake . 然后 make install即可。头文件默认会安装到 /usr/local/include/CGAL,库文件和 cmake 相关文件会安装到 /usr/local/lib/cmake中。

如果需要,也可以下载 CGAL examples 使用。

在你的工程中使用 CGAL

可以参考官方的 wiki 说明:https://github.com/CGAL/cgal/wiki/How-to-use-CGAL-with-CMake-or-your-own-build-system,也可以查看任意一个 CGAL-examples 中的 CMakeLists.txt 的例子。

只使用不包含 Qt5 的 CGAL 很容易,类似这样即可:

find_package(CGAL)
add_executable(my_executable my_source_file.cpp)
target_link_libraries(my_executable CGAL::CGAL)

需要不同的 components 的话就加上:

find_package(CGAL REQUIRED COMPONENTS Core)
target_link_libraries(my_executable CGAL::CGAL CGAL::CGAL_Core)

使用 Qt5 的话则要多几个地方。下面是一个完整的 CMakeLists.txt的例子:

cmake_minimum_required(VERSION 3.1)
project(test_cgal)
#CGAL_Qt5 is needed for the drawing and CGAL_Core is needed for this special Kernel.
find_package(CGAL REQUIRED COMPONENTS Qt5 Core)
if(CGAL_FOUND AND CGAL_Qt5_FOUND)
  #required to use basic_viewer
  add_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS)
  #create the executable of the application
  add_executable(test_ test.cpp)
  #link it with the required CGAL libraries
  target_link_libraries(test_cgal CGAL::CGAL CGAL::CGAL_Qt5 CGAL::CGAL_Core)
else()
  message("ERROR: this program requires CGAL and CGAL_Qt5 and will not be compiled.")
endif()

测试用的 test.cpp

#include <CGAL/Exact_predicates_exact_constructions_kernel_with_sqrt.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/boost/graph/helpers.h>
#include <CGAL/draw_surface_mesh.h>

typedef CGAL::Exact_predicates_exact_constructions_kernel_with_sqrt K;
typedef K::Point_3 Point;
typedef CGAL::Surface_mesh<Point> Mesh;

int main()
{
  Mesh m;
  CGAL::make_icosahedron<Mesh, Point>(m);
  CGAL::draw(m);
  return 0;
}

错误汇总

参考:https://github.com/Homebrew/legacy-homebrew/issues/29938

可能会遇到如下所示的 Qt5 的错误:

CMake Error at /usr/local/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:15 (message):
  The imported target "Qt5::Core" references the file

     "/usr/local/.//mkspecs/macx-clang"

这是因为 Qt5 安装后,部分文件路径的链接出现了问题。解决方法在上面安装Prerequisites 中已经给出了。

#

Search

    Table of Contents