CGAL在VS2013中的安装关键问题的解决

前言

最近需要用到CGAL的三角剖分功能,而且以后做研究也会需要用到,所以打算花点时间安装CGAL。然而过程充满了曲折,主要还是在编译安装上折腾比较久。后来安装成功了回过头来,才发现原来CGAL官网给的安装步骤才是最好的,比在网上搜的要更及时,而且句句箴言!

如果英文还过得去,强烈推荐按照官方的步骤进行安装。当然,这样还是会遇到点小问题,我在以下会有所提及。

CGAL官方指南:http://www.cgal.org/download/windows.html

安装CGAL前的准备

  1. cmake: 必须安装,用于生成项目文件
  2. boost:必须安装。
  3. Qt:如果想要运行CGAL附带的demo,就需要安装,在此我们也一并介绍。
  4. LibQGLViewer:如果要运行demo里面的3D部分,就需要安装。

安装 cmake

下载最新的cmake,然后一路next安装到底,还是很省心的。

安装完成后,确认(cmake安装目录)\bin 已经加入PATH,不在里面的话就自己添加好啦。

安装 boost

虽然boost是个头文件库,直接加入默认include文件中就能运行大部分的功能,但既然要装,说不准哪天就要用到了,所以还是一口气装全吧。boost如果是下载源码进行编译,则会遇到相当大的困难,我在下载源码尝试很久之后最终放弃。

在CGAL官方安装说明中推荐下载预编译好的boost进行安装。所以如果不是对自己特别自信,请去下载预编译版本吧。官网这样告诉我们

I download and run the file boost_1_59_0-msvc-xx.0-32.exe (where xx = 10 for MSVC 2010, 11 for 2012, 12 for 2013)
I choose to extract the files to a new directory c:\dev\libboost_1_59_0

我的电脑是装的VS2013,所以就选择boost_1_59_0-msvc-12.0-32.exe。之所以不装64位的是因为可能会因为各种支持问题出现莫名其妙的错误(笔者没有试过,但的确从前安装matplotlib的时候才发现其中一个依赖项不支持64位,所以很折腾)

  1. 有关安装位置的选择:安装位置不一定在C盘,只需要保证之后加到环境变量中的 BOOT_ROOT(非必须),BOOT_LIBRARYDIR, BOOT_INCLUDEDIR 指向正确即可。比如笔者就安装在了D:\boost_1_59_0\

  2. 环境变量的设置:设置两个环境变量,因为Cmake在生成CGAL项目的时候需要找到boost并连接,需要用到这两个环境变量

    BOOST_LIBRARYDIR=(boost安装位置)\lib32-msvc-xx.0
    BOOST_INCLUDEDIR=(boost安装位置)

  3. 将 “(boost安装位置)\lib32-msvc-xx.0” 加入到 PATH 中去

至此boost安装完成,可以尝试运行test一下。注意将 BOOT_INCLUDEDIR,BOOT_LIBRARYDIR 分别加入到VS项目属性中的包含目录和库目录中去。

安装Qt

Qt突然看上去要像是收费的样子,很怕怕。不过没关系,Qt提供了LGPL协议的开源版本,在其官网下往下拉即可看到。注意下载的时候下载offline的下载版,不然你会因为online版本不显示下载进度而疯掉的。

一路next,注意,安装位置同样可以不选择C盘,只要环境变量 QTDIR 和 PATH 指向正确即可。

  1. 环境变量的设置

    QTDIR=D:\Qt\Qt5.5.1 (即Qt安装位置)

  2. 将 “D:\Qt\Qt5.5.1\5.5\msvcXXXX_XX\bin” 加入到 PATH 中去

LibQGLViewer

一定要下载source(http://www.libqglviewer.com) 解压后放到如:

C:\dev\libQGLViewer-2.6.3

Start the x86 Visual Studio Command Prompt 就是在VS目录中bin下面的vcvars32.bat,在命令行下运行一下。回到LibQGLViewer的安装目录,cmd下运行。不先运行的话,会出现rc 不是命令balabala

qmake.exe
nmake

如果出现 cl 不是命令balabala 就需要添加 “(VS 安装目录)\VC\bin”到path里面。

  1. 环境变量的设置

    QGLVIEWERROOT=C:\dev\libQGLViewer-2.6.3 (即LibQGLViewer安装位置)

  2. 将 “C:\dev\libQGLViewer-2.6.3\QGLViewer\release;C:\dev\libQGLViewer-2.6.3\QGLViewer\debug” 加入到 PATH 中去

安装并编译CGAL

下载

同样注意下载installer而不是源码进行编译!下载 CGAL-4.7-Setup.exe 并安装。比如安装到了C:\dev\CGAL-4.7(实际上会安装到C:\Program Files\CGAL-4.7)

注意最后会提醒要将 (CGAL-4.7安装目录)\auxiliary\gmp\lib 加入到PATH中去

cmake 生成

用管理员身份打开Cmake,否则无法对C盘进行操作。

I set C:\dev\CGAL-4.7 for source and C:\dev\CGAL-4.7\build as binaries
Click on Configure
Choose “Visual Studio xx xxxx” for the 32-bit version and “Visual Studio xx xxxx Win64” for the 64-bit version
Click on Generate

注意,这里Cmake有可能会报错,因为它找不到boost。不要管它的提示什么BOOST_INCLUDE_DIR 没有设好,你确定自己的环境变量没有错而又使用的是最新的boost,那么很有可能是Cmake没有及时更新,没有识别出你的版本。进入Cmake的安装目录,找到 ...\share\cmake-3.3\Modules\FindBoost.cmake,在以下代码中添加自己的boost的版本号。然后就能顺利Generate。

# The user has not requested an exact version.  Among known
  # versions, find those that are acceptable to the user request.
  set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
    "1.59.0" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55" "1.54.0" "1.54"
    "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51"
    "1.50.0" "1.50" "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.1"
    "1.46.0" "1.46" "1.45.0" "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42"
    "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37"
    "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0"
    "1.34" "1.33.1" "1.33.0" "1.33")
  set(_boost_TEST_VERSIONS)

编译安装

generate成功后进入build目录,点开CGAL.sln,用Debug和Release模式各生成一遍ALL_BUILD即可。建议再单独生成以下带Install字样的项目,因为貌似它会自动给Cmake添加 FindCGAL.cmake。还会在C:\Program Files (x86)\ 下生成一个 CGAL 文件,方便引用。

在编译完成后,在\build\include\CGLA目录下会出现一个compiler_config.h 的文件,复制出来放在\include下。否则会在编译自己的项目时找不到。

最后,将 (CGAL-4.7安装目录)\build\bin 加入到PATH中去

使用CGAL

在使用CGAL的时候,需要设置 属性->配置属性->VC++目录:

可执行目录:

$(QTDIR)\5.5\msvc2013\bin
$(CGAL_DIR)\auxiliary\gmp\lib
$(CGAL_DIR)\bin(or \build\bin)

include目录中包含:

$(BOOST_INCLUDEDIR)
$(CGAL_DIR)\include
$(CGAL_DIR)\auxiliary\gmp\include

lib目录中包含:

$(QTDIR)\5.5\msvc2013\lib
$(BOOST_LIBRARYDIR)
$(CGAL_DIR)\lib
$(CGAL_DIR)\auxiliary\gmp\lib

属性->配置属性->链接器->输入中附加依赖项:

libgmp-10.lib
libmpfr-4.lib

忽略项:

gmp-vc100-mt-gd.lib
mpfr-vc100-mt-gd.lib

即便如此,最后还是会出现“找不到 CGAL-vc120-mt-gd-4.7.dll”,没关系,从$(CGAL_DIR)\build\bin中找出来,扔到你的项目目录下即可。

再次提醒一些容易忘记的细节

加入PATH的目录

(cmake安装目录)\bin
(boost安装位置)\lib32-msvc-xx.0
(Qt安装目录)\5.5\msvcXXXX_XX\bin
(libQGLViewer安装目录)\QGLViewer\release
(libQGLViewer安装目录)\QGLViewer\debug
(CGAL-4.7安装目录)\auxiliary\gmp\lib
(CGAL-4.7安装目录)\build\bin

环境变量

BOOST_LIBRARYDIR=(boost安装位置)\lib32-msvc-xx.0
BOOST_INCLUDEDIR=(boost安装位置)
QTDIR=D:\Qt\Qt5.5.1 (即Qt安装位置)
QGLVIEWERROOT=C:\dev\libQGLViewer-2.6.3 (即LibQGLViewer安装位置)

参考与致谢

  1. http://jingyan.baidu.com/article/1709ad80b673f34634c4f0ac.html google 搜出来的排第一的结果,然而其实boost的安装可以更简便,我就是卡在这里好久都绕不过去,最后看来官方教程才搞定boost的安装。

  2. http://blog.csdn.net/babywong/article/details/40983039 这篇主要是帮我解决了使用CGAL时候的各种链接错误等等的编译问题,是写得很正确的一篇。但是最后有关CGAL-vc90-mt-gd-4.5.dll missing 问题的解决并不是很到位,虽然也是对的。

你可能感兴趣的:(图形学)