最近需要用到CGAL的三角剖分功能,而且以后做研究也会需要用到,所以打算花点时间安装CGAL。然而过程充满了曲折,主要还是在编译安装上折腾比较久。后来安装成功了回过头来,才发现原来CGAL官网给的安装步骤才是最好的,比在网上搜的要更及时,而且句句箴言!
如果英文还过得去,强烈推荐按照官方的步骤进行安装。当然,这样还是会遇到点小问题,我在以下会有所提及。
CGAL官方指南:http://www.cgal.org/download/windows.html
下载最新的cmake,然后一路next安装到底,还是很省心的。
安装完成后,确认(cmake安装目录)\bin 已经加入PATH,不在里面的话就自己添加好啦。
虽然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位,所以很折腾)
有关安装位置的选择:安装位置不一定在C盘,只需要保证之后加到环境变量中的 BOOT_ROOT(非必须),BOOT_LIBRARYDIR, BOOT_INCLUDEDIR 指向正确即可。比如笔者就安装在了D:\boost_1_59_0\
环境变量的设置:设置两个环境变量,因为Cmake在生成CGAL项目的时候需要找到boost并连接,需要用到这两个环境变量
BOOST_LIBRARYDIR=(boost安装位置)\lib32-msvc-xx.0
BOOST_INCLUDEDIR=(boost安装位置)
将 “(boost安装位置)\lib32-msvc-xx.0” 加入到 PATH 中去
至此boost安装完成,可以尝试运行test一下。注意将 BOOT_INCLUDEDIR,BOOT_LIBRARYDIR 分别加入到VS项目属性中的包含目录和库目录中去。
Qt突然看上去要像是收费的样子,很怕怕。不过没关系,Qt提供了LGPL协议的开源版本,在其官网下往下拉即可看到。注意下载的时候下载offline的下载版,不然你会因为online版本不显示下载进度而疯掉的。
一路next,注意,安装位置同样可以不选择C盘,只要环境变量 QTDIR 和 PATH 指向正确即可。
环境变量的设置:
QTDIR=D:\Qt\Qt5.5.1 (即Qt安装位置)
将 “D:\Qt\Qt5.5.1\5.5\msvcXXXX_XX\bin” 加入到 PATH 中去
一定要下载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里面。
环境变量的设置:
QGLVIEWERROOT=C:\dev\libQGLViewer-2.6.3 (即LibQGLViewer安装位置)
将 “C:\dev\libQGLViewer-2.6.3\QGLViewer\release;C:\dev\libQGLViewer-2.6.3\QGLViewer\debug” 加入到 PATH 中去
同样注意下载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,否则无法对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的时候,需要设置 属性->配置属性->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安装位置)
http://jingyan.baidu.com/article/1709ad80b673f34634c4f0ac.html google 搜出来的排第一的结果,然而其实boost的安装可以更简便,我就是卡在这里好久都绕不过去,最后看来官方教程才搞定boost的安装。
http://blog.csdn.net/babywong/article/details/40983039 这篇主要是帮我解决了使用CGAL时候的各种链接错误等等的编译问题,是写得很正确的一篇。但是最后有关CGAL-vc90-mt-gd-4.5.dll missing
问题的解决并不是很到位,虽然也是对的。