标签:
先说一下我的系统是Win8.1 64位 + VS2013 + Qt5.4.2 x64 with opengl。好吧,上CGAL 官方网站 http://www.cgal.org 下载软件包。
我下载的是CGAL-4.6-Setup.exe,当时的最新版本。下载后直接运行,一路next,来到第一个需要我们选择的地方
HTML Manuals 比较大,我没有选。文档官方上都是有的,如果需要本机文档,以后单独下载文档安装也是可以的。
然后:
选择64位,Next,安装位置在C:\Program Files\CGAL-4.6,好的,一路next到完成(中间会下载两个东东,如果没有选HTML Manuals的话,
很快就结束安装了)。安装完后提示设置环境变量和path路径,照做
在我的机子上Vs 2013 ,Qt 5.4.2和CMake(我用的是CMake-3.2.2-win32-x86) 是提前安装了的,还差一个boost,上官网,http://www.boost.org/
下载boost 1.58.0,解压编译boost,注意编译成64位的,一开始我搞错了,编译成了32位的,最后编译CGAL时会出现3个链接错误。
1 error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ),该符号在函数 "void __cdecl boost::system::`dynamic initializer for ‘native_ecat‘‘(void)" (??__Enative_ecat@system@boost@@YAXXZ) 中被引用????C:\Program Files\CGAL-4.6\build\src\CGAL\all_files.obj????CGAL
2 error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAAEBVerror_category@12@XZ),该符号在函数 "void __cdecl boost::system::`dynamic initializer for ‘errno_ecat‘‘(void)" (??__Eerrno_ecat@system@boost@@YAXXZ) 中被引用????C:\Program Files\CGAL-4.6\build\src\CGAL\all_files.obj????CGAL
3 error LNK2019: 无法解析的外部符号 "void __cdecl boost::detail::set_tss_data(void const *,class boost::shared_ptr<struct boost::detail::tss_cleanup_function>,void *,bool)" (?set_tss_data@detail@boost@@YAXPEBXV?$shared_ptr@Utss_cleanup_function@detail@boost@@@2@PEAX_N@Z),该符号在函数 "public: __cdecl boost::thread_specific_ptr<int>::~thread_specific_ptr<int>(void)" (??1?$thread_specific_ptr@H@boost@@QEAA@XZ) 中被引用????C:\Program Files\CGAL-4.6\build\src\CGAL\all_files.obj????CGAL
如果出现同样的错误,可能是boost库32位和64位的问题,可以通过重新编译相应的boost库解决。
简单说一下boost的编译:
我的boost是解压在C:\Doc\Dev\boost_1_58_0的,运行VS2013 x64 Native Tools Command Prompt.
Cd C:\Doc\Dev\boost_1_58_0
运行 bootstrap.bat
然后运行 b2.exe stage --toolset=msvc-12.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-serialization
--without-wave --without-test --without-program_options --without-serialization --without-signals --stagedir=".\bin\vc12_x64" link=static
runtime-link=shared threading=multi debug release address-model=64
注意最后面的address-model=64
编译用了12分钟,编译后,设置环境变量 BOOST_ROOT和BOOST_LIBRARYDIR(用户变量还是系统变量随意吧)
运行CMake,设置source code为 C:/Program Files/CGAL-4.6,binaries 为 C:/Program Files/CGAL-4.6/build
点击 Configure,出现错误:
….
Could not find the following Boost libraries:
boost_thread
boost_system
…
在网上找一个解决方法:把libboost_system-vc120-mt-1_58.lib改名为boost_system-vc120-mt-1_58.lib,这个办法编译时最后还是会出错。
主要原因在于我的boost是静态编译的,应该这样修改:
点Configure
出现 Configuring done。然后点击Generate,出现Generating done,就可以了。
然后以管理员身份启动VS2013,打开"C:\Program Files\CGAL-4.6\build\CGAL.sln"
直接编译解决方案,成功。
最后查了一下,CGAL 使用的开源协议是GPLv3,另外也有商业许可。更多信息可以查看http://www.cgal.org/license.html
相关软件百度云下载 http://pan.baidu.com/s/1eQwDEWq 密码: c28d
标签:
原文地址:http://www.cnblogs.com/seyonola/p/4648054.html