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

文章目录

      • 说明
        • 1. 写在前面
        • 2. 注意并检查版本的一致性
        • 3. 资源打包下载
      • 详细配置过程
        • 1. 下载
        • 2. 配置 boost x64
        • 3. 解压 CGAL
        • 4. 编译 CGAL
      • Qt 下的嵌套使用
      • 我遇到的问题
        • 1. CMake 提示 Project may be invalid
        • 2. 测试程序时提示无法打开包含文件 gmp.h
        • 3. 测试程序时提示 C1001,编译器发生内部错误
        • 4. 提示缺少 assertions.h
        • 5. 其它错误
      • 参考博客

说明


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 年了
  • 下载链接:https://www.microsoft.com/en-us/software-download/windows10
  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
  • 下载链接:https://blog.csdn.net/betteroneisme/article/details/52510607
  1. CGAL-4.8-Setup.exe(注:安装的时候会问你你是要 x86 还是 x64
  • 下载链接:https://github.com/CGAL/cgal/releases
  1. Qt:qt-opensource-windows-x86-msvc2013_64-5.7.0.exe(注:msvc2013_64
  • 下载链接:http://download.qt.io/archive/qt/5.7/5.7.0/
  1. Qt-VS addin:qt-vs-tools-msvc2013-2.0.0.vsix(注:msvc2013
  • 下载链接:http://download.qt.io/archive/vsaddin/
  1. CMake:cmake-3.13.0-rc2-win64-x64.zip(注:win64
  • 下载链接:https://cmake.org/files/
  1. libQGLViewer:libQGLViewer-2.7.1.zip(注:不分 x86 还是 x64 版本
  • 下载链接:http://libqglviewer.com/installWindows.html

3. 资源打包下载

  • 为了方便自己或后来人使用,将库打包上传至百度网盘,提取密码:ypcn。链接里的东西包括以下内容:
    • 编译并整理好的库
    • VS 下导出的配置文件
    • 还有官网的教程 PDF

详细配置过程


1. 下载

  • boost_1_65_0-msvc-12.0-64.exe

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

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

  • CGAL-4.8-Setup.exe

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

  • CMake-3.13.0 rc2

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 
#include 

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 + VS 2013 配置关键步骤(全网最详细版本)_第1张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第2张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第3张图片

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第4张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第5张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第6张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第7张图片

  • 完成后

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第8张图片

  • 此时在 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
       
  • 此时你的系统环境变量应该是这样的

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第9张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第10张图片

  • 需要测试了,还是新建 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 
#include 

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;
}
  • 正常结果

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第11张图片

  • 再写代码,进行第二次测试,这个代码同样来源于官网示例 Hello World
#include 
#include 
#include 
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 路径等等
  • 编译运行就能成功,这个应该不会失败吧…

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第12张图片

  • 如果你还有需求,那你可以继续编译插件 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 + VS 2013 配置关键步骤(全网最详细版本)_第13张图片

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

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第14张图片

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

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第15张图片

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

CGAL + VS 2013 配置关键步骤(全网最详细版本)_第16张图片

4. 提示缺少 assertions.h

解决办法:添加头文件 #include
参考: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. 其它 …

你可能感兴趣的:(图形图像,-,CGAL)