CGAL + VS 2013 配置关键步骤(全网最详细版本)

说明


1. 写在前面
  • 本人也是第一次配置,边配置,边截图,边发博客
  • CGAL 的配置分为单独的 CGAL 配置和 Qt 下可视化的配置,重点讲解单独的 CGAL 配置
  • 建议参考官方的安装说明:Download CGAL for Windows
  • libQGLViewer 只是你需要运行官网的 Demo 或者是想在 Qt 窗口嵌套 GCAL 结果窗口时才进行配置,否则不需要管
2. 注意并检查版本的一致性

在以后配置三方库时,一定要注意软件版本的一致性,尽量保持始终使用同一版本的软件。

以 CGAL 的配置为例,我简单罗列一下我用到的所有版本。主要注意 MSVC 编译器和 x64 标志。以下是所有版本的软件下载地址,欢迎收藏。

  1. Windows:Windows 10 ,版本 1809,x64(注:现在的 Windows 全是 x64 起步了吧,都 2019 年了
  1. Visual Studio:2013,版本 12.0.40629.00 Update 5注:这里一定是 Update 5 !!!此外,VS 2013 只有 x86 版本,只是项目属性有区分
  • 下载链接:ed2k://|file|cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso|5567336448|641555AD6472A98923B29CC5E371461E|/ (注:该链接来源于 https://msdn.itellyou.cn/ ,左侧开发人员工具选择 Visual Studio 2013 Update 5,选择 Ultimate 版本获取链接)
  1. boost:boost_1_65_0-msvc-12.0-64.exe
  1. CGAL-4.8-Setup.exe(注:安装的时候会问你你是要 x86 还是 x64
  1. Qt:qt-opensource-windows-x86-msvc2013_64-5.7.0.exe(注:msvc2013_64
  1. Qt-VS addin:qt-vs-tools-msvc2013-2.0.0.vsix(注:msvc2013
  1. CMake:cmake-3.13.0-rc2-win64-x64.zip(注:win64
  1. libQGLViewer:libQGLViewer-2.7.1.zip(注:不分 x86 还是 x64 版本
3. 资源打包下载
  • 为了方便自己或后来人使用,将库打包上传至百度网盘,提取密码:ypcn。链接里的东西包括以下内容:
    • 编译并整理好的库
    • VS 下导出的配置文件
    • 还有官网的教程 PDF

详细配置过程


1. 下载

boost 一是用来编译 CGAL,二是在运行 CGAL 时,也需要添加 boost 的头文件

注意 boost 版本号与自己的 VS 版本一致,不知道的参考该博客:MSVC 版本号对应。另外,在我写博客时,boost 的最新版本已经是 1_70_0 ,不建议你用最新的,否则出了什么幺蛾子你自己也不知道

这个下载一个 release 版就行,.exe 是安装版本(实质也是解压),.zip 是解压版本。注意,我就是在这里掉坑的,我一开始用的 4.13.1 的CGAL。在 CMake 时报错,后来又换了 4.13 版本的,还是错,我就郁闷了,然后把 boost 从 1_70_0 降到 1_69_0 还是不行。降到 65 了还是不行,我想肯定是 CGAL 有问题,后来仔细看 CGAL 安装完成后的提示,终于找到了问题所在,就是由于 CGAl 的版本造成的!!!

CMake 是用来编译 CGAL 用的,CMake 不了解的,自行查资料

尽量找一个高版本,我用的是 3.13.0 rc2,注意 CMake 不用安装,解压即可

2. 配置 boost x64

注意这里主要是说 x64。至于 x86 的配置和这个就是大同小异

其实编译 boost 需要注意的还挺多,你是要编译动态库还是静态库,你是要基于什么编译器进行编译,你是要编译 x86 的还是 x64 的等等,具体参考下面两个博客,尤其是第一个博客,因为目前我们只是以学习 CGAL 为主,默认的这些编译方式就无所谓了,但是以后涉及到大工程时,你就不得不注意!!!具体可以参考以下两个博客,写的很好!!!

参考博客一:boost 1.56.0 编译及使用
参考博客二:CGAL的64位开发环境配置

boost 作为很多开源库的三方库,你的电脑中可能已经有了,有的话没必要重复安装,安装多了有时候造成冲突自己都不知道…

按照官网的说法,下载完解压后就可以了,不需要进行以下的操作就可以用 boost 库来编译 CGAL。但是我不想测试了,就直接按照前人的方法操作了,一是省得又出现什么幺蛾子,二是方便以后自己使用!!!

  • 双击 bootstrap.bat(有人说这里要用 VS 的 x64 命令行工具,其实也没必要,用了也没错)

  • cmd 调出来,切换到当前目录,输入 bjam address-model=64(这里的 address-model=64 是编译生成 x64 的库,然后回车)。

  • 编译完成后,./boost/ 就是头文件,相当于 include 文件夹,./stage/lib/ 就是静态库。至于 boost 动态库的生成与使用,用到再说

  • 新建两个系统变量

  • 环境变量一:变量名:BOOST_INCLUDEDIR,变量值:D:\boost_1_65_0

  • 环境变量二:变量名:BOOST_LIBRARYDIR,变量值:D:\boost_1_65_0\lib64-msvc-12.0

  • 系统变量新建一个 Path

  • D:\boost_1_65_0\lib64-msvc-12.0

  • 测试一下,新建 win32 工程项目

  • VC++包含目录、VC++库目录就是上面的 ./boost/ 和 ./stage/lib/

  • 链接器 - 输入 - 附加依赖项需要自己添加,添加方式为 ./stage/lib/ 下新建一个 XXX.bat,内容写 DIR *.* /B>result.txt,双击运行该 XXX.bat,就可以在 result.txt 中获取所有的 .lib,为方便直接复制,现陈列出来

libboost_atomic-vc120-mt-1_65.lib
libboost_atomic-vc120-mt-gd-1_65.lib
libboost_container-vc120-mt-1_65.lib
libboost_container-vc120-mt-gd-1_65.lib
libboost_context-vc120-mt-1_65.lib
libboost_context-vc120-mt-gd-1_65.lib
libboost_date_time-vc120-mt-1_65.lib
libboost_date_time-vc120-mt-gd-1_65.lib
libboost_exception-vc120-mt-1_65.lib
libboost_exception-vc120-mt-gd-1_65.lib
libboost_filesystem-vc120-mt-1_65.lib
libboost_filesystem-vc120-mt-gd-1_65.lib
libboost_iostreams-vc120-mt-1_65.lib
libboost_iostreams-vc120-mt-gd-1_65.lib
libboost_math_c99-vc120-mt-1_65.lib
libboost_math_c99-vc120-mt-gd-1_65.lib
libboost_math_c99f-vc120-mt-1_65.lib
libboost_math_c99f-vc120-mt-gd-1_65.lib
libboost_math_c99l-vc120-mt-1_65.lib
libboost_math_c99l-vc120-mt-gd-1_65.lib
libboost_math_tr1-vc120-mt-1_65.lib
libboost_math_tr1-vc120-mt-gd-1_65.lib
libboost_math_tr1f-vc120-mt-1_65.lib
libboost_math_tr1f-vc120-mt-gd-1_65.lib
libboost_math_tr1l-vc120-mt-1_65.lib
libboost_math_tr1l-vc120-mt-gd-1_65.lib
libboost_numpy3-vc120-mt-1_65.lib
libboost_numpy3-vc120-mt-gd-1_65.lib
libboost_prg_exec_monitor-vc120-mt-1_65.lib
libboost_prg_exec_monitor-vc120-mt-gd-1_65.lib
libboost_program_options-vc120-mt-1_65.lib
libboost_program_options-vc120-mt-gd-1_65.lib
libboost_random-vc120-mt-1_65.lib
libboost_random-vc120-mt-gd-1_65.lib
libboost_regex-vc120-mt-1_65.lib
libboost_regex-vc120-mt-gd-1_65.lib
libboost_serialization-vc120-mt-1_65.lib
libboost_serialization-vc120-mt-gd-1_65.lib
libboost_stacktrace_noop-vc120-mt-1_65.lib
libboost_stacktrace_noop-vc120-mt-gd-1_65.lib
libboost_stacktrace_windbg-vc120-mt-1_65.lib
libboost_stacktrace_windbg-vc120-mt-gd-1_65.lib
libboost_system-vc120-mt-1_65.lib
libboost_system-vc120-mt-gd-1_65.lib
libboost_wserialization-vc120-mt-1_65.lib
libboost_wserialization-vc120-mt-gd-1_65.lib
  • 工程属性改成 x64 的平台,debug 和 release 无所谓

  • 测试代码

#include <boost/lexical_cast.hpp>
#include <iostream>

using namespace std;

int main() {
    using boost::lexical_cast;
    int a = lexical_cast<int>("123");
    double b = lexical_cast<double>("123.0123456789");
    string s0 = lexical_cast<string>(a);
    string s1 = lexical_cast<string>(b);
    cout << "number: " << a << "  " << b << endl;
    cout << "string: " << s0 << "  " << s1 << endl;
    int c = 0;
    try {
        c = lexical_cast<int>("abcd");
    } catch (boost::bad_lexical_cast &e) {
        cout << e.what() << endl;
    }
    getchar();
    return 0;
}
  • 正常运行结果

在这里插入图片描述

至此,boost 的配置已经完成,我觉得写得很详细了,关键点也已经说了,若你还有疑问,欢迎留言,一起进步!!!

3. 解压 CGAL

不管你下载的是 .exe 还是 .zip,前者进行安装,后者进行解压,效果都一样。(我解压在了 D:/CGAL)

安装完毕后,务必检查安装的是否正确!!!

第一,检查 ./CGAL/auxiliary/gmp/ 下是否有东西,没有的话赶紧打住,重下载一个低版本的 CGAL 进行安装

在这里插入图片描述

第二,检查系统变量是否增加了 CGAL_DIR(变量值为 D:\CGAL) 这一变量,没有的话,自行添加!!!

在这里插入图片描述

第三,检查系统变量 Path 下是否增加了 D:\CGAL\auxiliary\gmp\lib,没有的话,自行添加!!!我就是通过 CMake 报错推断 CGAL 有错,然后根据 CGAL 完成时候的提醒推断出来这里有错,最终发现我的 gmp 时空的!!!

在这里插入图片描述

在这里插入图片描述

4. 编译 CGAL
  • 打开 cmake-gui.exe
  • Where is the source code:把 CMakeLists.txt 拖进来就好
  • Where to build the binaries:我选择新建 build 文件夹
  • Configure
  • Visual Studio 12 2013 Win64,一定选择 Win64
  • Use default native compilers
  • 此时,我遇到了错误,文章末尾再说,这里直接说正确的路子
  • Configure

在这里插入图片描述

  • 那要是提示找不到 boost 怎么办?就按照提示设置成你的 boost 路径就好,然后勾选 advanced ,然后重新 configuration,直到和我上面的一样就好
  • Generate
  • Generate完毕后,就完毕了,此时 build 文件夹下有这么些内容,主要是 CGAL.sln

在这里插入图片描述

  • 打开 CGAL.sln
  • 菜单栏生成 - 批生成 - 勾选 ALL_BUILD 的 Debug 和 Release。注意这里默认就是 x64,因为我们一直使用的是 x64 的 boost 和 CGAL,如果你发现不符合你的预期,赶紧停止并检查!!!

在这里插入图片描述

  • 完成后

在这里插入图片描述

  • 此时在 build 文件夹下生成 include、bin 和 lib 3 个文件夹,我们肯定想把其打包成一个精炼、简洁的库,但是存在以下几个问题

    • 原始解压出来的文件和生成的文件太过与混乱
    • bin 文件里边 .pdb 结尾的、lib 文件里 .ilk 结尾的,都是些中间文件,没什么用
    • bin 和 lib 都单独整理出来 debug 和 release 文件夹,两个文件夹的合并就是 bin 和 lib 目录下的总文件,造成重复,没什么用,果断删除
    • 解压出来的 include 目录、解压出来的 auxiliary\gmp\include 目录、以及 build 下的 include 目录都有用,共同作为 include 库
    • 解压出来的 auxiliary\gmp\lib 目录、build 下的 lib 目录都有用,共同作为 lib 库
  • 我们最终的 include两部分组成,第一部分是:将 build 文件夹下的 include 文件夹里 CGAL 文件夹里的 compiler_config.h 复制到解压出来的 include/CGAL 文件夹后得到的 include 文件夹;第二部分是:解压出来的 auxiliary\gmp\include 文件夹。(这里写的啰嗦,但是这是重点!!!)

  • 我们最终的 bin 也由两部分组成,第一部分是:build 文件夹下的 bin 文件夹,里边有 8 个文件,4 个 debug 的,4 个 release 的;第二部分是:auxiliary\gmp\lib,因为这个路径下也有两个 dll(libgmp-10.dlllibmpfr-4.dll)

  • 我们最终的 lib 也由两部分组成 ,第一部分是:build 文件夹下的 lib 文件夹,里边同样是有 8 个文件,4 个 debug 的,4 个 release 的;第二部分是:auxiliary\gmp\lib,因为这个路径下也有两个 lib(libgmp-10.liblibmpfr-4.lib)

  • 我们最终还需要在系统变量的 Path 下添加上述两个 bin 路径,分别为 D:\CGAL\auxiliary\gmp\libD:\CGAL\bin (我是直接将 CGAL 库整理在 D 盘)。然后重启电脑!!!重启电脑!!!重启电脑!!!!

  • 我觉得有必要画一个图说一下最后打包好的库的相对路径

CGAL(总文件夹)
  |
  |---auxiliary
  |      |---dgb(这个其实也没什么用,除非你用到 python)
  |      |---gmp
  |           |---include
  |           |     |---gmp.h
  |           |     |---mpf2mpfr.h
  |           |     |---mpfr.h
  |           |---lib
  |                 |---libgmp-10.dll
  |                 |---libgmp-10.lib
  |                 |---libmpfr-4.dll
  |                 |---libmpfr-4.lib
  |
  |
  |---bin
  |    |---CGAL_Core-vc120-mt-4.8.dll
  |    |---CGAL_Core-vc120-mt-gd-4.8.dll
  |    |---CGAL_ImageIO-vc120-mt-4.8.dll
  |    |---CGAL_ImageIO-vc120-mt-gd-4.8.dll
  |    |---CGAL_Qt5-vc120-mt-4.8.dll
  |    |---CGAL_Qt5-vc120-mt-gd-4.8.dll
  |    |---CGAL-vc120-mt-4.8.dll
  |    |---CGAL-vc120-mt-gd-4.8.dll
  |
  |---examples(想玩官方 Demo 的话你就留着,不想的话删了)
  |    |---...
  |
  |---include
  |    |---CGAL
  |         |---若干文件夹
  |         |---...
  |         |---若干 .h
  |         |---...
  |         |---compiler_config.h
  |         |---...
  |         |---gmp.h(注意这个 gmp.h 和 auxiliary\gmp\include\gmp.h 不一样,但是你还必须都添加到包含目录)
  |         |---...
  |
  |---lib
       |---CGAL_Core-vc120-mt-4.8.lib
       |---CGAL_Core-vc120-mt-gd-4.8.lib
       |---CGAL_ImageIO-vc120-mt-4.8.lib
       |---CGAL_ImageIO-vc120-mt-gd-4.8.lib
       |---CGAL_Qt5-vc120-mt-4.8.lib
       |---CGAL_Qt5-vc120-mt-gd-4.8.lib
       |---CGAL-vc120-mt-4.8.lib
       |---CGAL-vc120-mt-gd-4.8.lib
       
  • 此时你的系统环境变量应该是这样的

在这里插入图片描述

  • 此时你的系统环境变量的 Path应该是这样的

在这里插入图片描述

  • 需要测试了,还是新建 win32 工程,下面配置以我的为例,(我是直接将 CGAL 库 和 boost 库 都整理在 D 盘)
  • 工程属性改成 x64 的平台,debug 和 release 根据你的 CGAL 的配置来
  • VC++包含目录(两个 CGAL 的加一个 boost 的)
  • D:\CGAL\auxiliary\gmp\include;D:\CGAL\include;D:\boost_1_65_0;
  • VC++库目录(两个 CGAL 的加两个 boost 的)
  • D:\boost_1_65_0\lib64-msvc-12.0;D:\boost_1_65_0\stage\lib;D:\CGAL\lib;D:\CGAL\auxiliary\gmp\lib;
  • 链接器 - 输入 - 附加依赖项(两组 CGAL 的 lib 和一组 boost 的 lib)
  • 我又给你总结出来了
CGAL-vc120-mt-4.8.lib
CGAL_Core-vc120-mt-4.8.lib
CGAL_ImageIO-vc120-mt-4.8.lib
CGAL_Qt5-vc120-mt-4.8.lib
libgmp-10.lib
libmpfr-4.lib
libboost_atomic-vc120-mt-1_65.lib
libboost_atomic-vc120-mt-gd-1_65.lib
libboost_container-vc120-mt-1_65.lib
libboost_container-vc120-mt-gd-1_65.lib
libboost_context-vc120-mt-1_65.lib
libboost_context-vc120-mt-gd-1_65.lib
libboost_date_time-vc120-mt-1_65.lib
libboost_date_time-vc120-mt-gd-1_65.lib
libboost_exception-vc120-mt-1_65.lib
libboost_exception-vc120-mt-gd-1_65.lib
libboost_filesystem-vc120-mt-1_65.lib
libboost_filesystem-vc120-mt-gd-1_65.lib
libboost_iostreams-vc120-mt-1_65.lib
libboost_iostreams-vc120-mt-gd-1_65.lib
libboost_math_c99-vc120-mt-1_65.lib
libboost_math_c99-vc120-mt-gd-1_65.lib
libboost_math_c99f-vc120-mt-1_65.lib
libboost_math_c99f-vc120-mt-gd-1_65.lib
libboost_math_c99l-vc120-mt-1_65.lib
libboost_math_c99l-vc120-mt-gd-1_65.lib
libboost_math_tr1-vc120-mt-1_65.lib
libboost_math_tr1-vc120-mt-gd-1_65.lib
libboost_math_tr1f-vc120-mt-1_65.lib
libboost_math_tr1f-vc120-mt-gd-1_65.lib
libboost_math_tr1l-vc120-mt-1_65.lib
libboost_math_tr1l-vc120-mt-gd-1_65.lib
libboost_numpy3-vc120-mt-1_65.lib
libboost_numpy3-vc120-mt-gd-1_65.lib
libboost_prg_exec_monitor-vc120-mt-1_65.lib
libboost_prg_exec_monitor-vc120-mt-gd-1_65.lib
libboost_program_options-vc120-mt-1_65.lib
libboost_program_options-vc120-mt-gd-1_65.lib
libboost_random-vc120-mt-1_65.lib
libboost_random-vc120-mt-gd-1_65.lib
libboost_regex-vc120-mt-1_65.lib
libboost_regex-vc120-mt-gd-1_65.lib
libboost_serialization-vc120-mt-1_65.lib
libboost_serialization-vc120-mt-gd-1_65.lib
libboost_stacktrace_noop-vc120-mt-1_65.lib
libboost_stacktrace_noop-vc120-mt-gd-1_65.lib
libboost_stacktrace_windbg-vc120-mt-1_65.lib
libboost_stacktrace_windbg-vc120-mt-gd-1_65.lib
libboost_system-vc120-mt-1_65.lib
libboost_system-vc120-mt-gd-1_65.lib
libboost_wserialization-vc120-mt-1_65.lib
libboost_wserialization-vc120-mt-gd-1_65.lib
  • 写代码进行测试,用两个例子来进行测试(两个都对了,就说明没问题了

  • 写代码,进行第一次测试,这个代码来源于官网示例 Hello World

#include <iostream>
#include <CGAL/Simple_cartesian.h>

typedef CGAL::Simple_cartesian<double> Kernel;
typedef Kernel::Point_2 Point_2;
typedef Kernel::Segment_2 Segment_2;

int main() {
    Point_2 p(1, 1), q(10, 10);
    std::cout << "p = " << p << std::endl;
    std::cout << "q = " << q.x() << " " << q.y() << std::endl;
    std::cout << "sqdist(p,q) = "
              << CGAL::squared_distance(p, q) << std::endl;

    Segment_2 s(p, q);
    Point_2 m(5, 9);

    std::cout << "m = " << m << std::endl;
    std::cout << "sqdist(Segment_2(p,q), m) = "
              << CGAL::squared_distance(s, m) << std::endl;
    std::cout << "p, q, and m ";
    switch (CGAL::orientation(p, q, m)) {
    case CGAL::COLLINEAR:
        std::cout << "are collinear\n";
        break;
    case CGAL::LEFT_TURN:
        std::cout << "make a left turn\n";
        break;
    case CGAL::RIGHT_TURN:
        std::cout << "make a right turn\n";
        break;
    }
    std::cout << " midpoint(p,q) = " << CGAL::midpoint(p, q) << std::endl;
    return 0;
}
  • 正常结果

在这里插入图片描述

  • 再写代码,进行第二次测试,这个代码同样来源于官网示例 Hello World
#include <iostream>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <sstream>
typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef Kernel::Point_2 Point_2;
int main() {
   Point_2 p(0, 0.3), q, r(2, 0.9);
   {
      q = Point_2(1, 0.6);
      std::cout << (CGAL::collinear(p, q, r) ? "collinear\n" : "not collinear\n");
   }

   {
      std::istringstream input("0 0.3   1 0.6   2 0.9");
      input >> p >> q >> r;
      std::cout << (CGAL::collinear(p, q, r) ? "collinear\n" : "not collinear\n");
   }

   {
      q = CGAL::midpoint(p, r);
      std::cout << (CGAL::collinear(p, q, r) ? "collinear\n" : "not collinear\n");
   }

   return 0;
}
  • 正常结果

在这里插入图片描述

可能碰到的一些错误请看下文~~~

至此,单独的 CGAL 的配置已经完成,我觉得写得很详细了,关键点也已经说了,若你还有疑问,欢迎留言,一起进步!!!

Qt 下的嵌套使用


  • 假设你已经集成好了 VS + Qt 开发环境,没有做好该工作的,请看我以前写的一篇博文,很详细 PCL+VS+Qt+Win10 的综合配置精华
  • 解压 libQGLViewer-2.7.1
  • 开始编译 QGLViewer
  • 打开 VS -> 菜单栏 -> QT VS TOOLS -> Open QT Project File(.pro),选择解压出来 libQGLViewer-2.7.1\QGLViewer\QGLViewer.pro(注意不是根目录下的 libQGLViewer-2.7.1.pro
  • 先进行 debug 下的生成
  • 切换成 debug,工程右键 -> 生成
  • 很快生成后,在 libQGLViewer-2.7.1\QGLViewer 下生成 QGLViewerd2.lib 和 QGLViewerd2.dll
  • 由于 debug 和 release 生成的库名字都相同,所以自己先拷贝出来
  • 再进行 release 下的生成
  • 切换成 release,工程右键 -> 生成
  • 同样在 libQGLViewer-2.7.1\QGLViewer 下生成 QGLViewerd2.lib 和 QGLViewerd2.dll ,只不过这次是 release 下的
  • 为了打包成一个库,我将生成的 debug 文件重命名,分别为 QGLViewerd2_d.libQGLViewerd2_d.dll
  • 然后 4 个文件混在一块,当作我们的库
  • 测试 Demo
  • 同样在 VS 下加载 libQGLViewer-2.7.1\examples\simpleViewer\examples.pro
  • 临时测试的话,可以将 debug 的 dll 和 lib 或者是 release 下的 dll 和 lib 复制到 .pro 同一级目录下运行,长久的话就还是老方法,系统变量 Path 添加 dll 路径等等
  • 编译运行就能成功,这个应该不会失败吧…

在这里插入图片描述

  • 如果你还有需求,那你可以继续编译插件 plugin,这时候是编译 designerPlugin.pro

  • 将编译出来的 qglviewerplugin.libqglviewerplugin.dll 拷贝至 D:\Qt\5.7\msvc2013_64\plugins\designer

  • 此时就可以在 VS + Qt 集成环境下使用该窗口了

该部分内容参考以下博客:
win10+ vs2015+QT5.7.0+boost_1_62_0+ CMake3.7.0+cgal-4.9的64位开发环境配置
*QGLViewer 编译安装步骤
*在Win10,VS2013 中配置CGAL库

我遇到的问题


我也是人品差,把能遇到的问题都遇到了,也是醉了。。。不过也学到了很多~~~

1. CMake 提示 Project may be invalid

在这里插入图片描述

解决办法:重新下载 CGAL 安装包,原因可能是因为你缺少 gmp 文件夹内的相关东西,具体见上文

2. 测试程序时提示无法打开包含文件 gmp.h

在这里插入图片描述

解决办法:检查你的 include 和 lib 设置的是否正确,请仔细阅读详细配置过程

3. 测试程序时提示 C1001,编译器发生内部错误

在这里插入图片描述

解决办法:检查你的 VS 2013 是否是 Update 5 版本(下图为 非Update 5 和 Update 5 版本对比)

在这里插入图片描述

4. 提示缺少 assertions.h

解决办法:添加头文件 #include <CGAL/assertions.h>
参考:use of undeclared identifier 'CGAL_assertion’

5. 其它错误

解决办法:请及时留言评论

参考博客


  1. QT5.11.1+MinGW+CGAL4.11(QT配置CGAL库)
  2. CGAL4.9+boost1.59+QT5.6+vs2015 64bit+windows10配置
  3. CGAL在VS2013中的安装关键问题的解决
  4. CGAL详细安装教程
  5. VS2013环境下Boost库配置
  6. Boost编译的一些注意事项
  7. CGAL编译与配置
  8. visual studio2010问题导致CMake执行例子时出错Error in configuration process,project files may be invalid
  9. CMake error: error in configuration process, project files may be invalid
  10. vs2013遇到“编译器中发生内部错误”的解决方法
  11. 其它 …
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值