zl程序教程

您现在的位置是:首页 >  后端

当前栏目

win10 X64 安装Boost.1_72_0与CGAL_5.0.2 VS2015配置方法

安装配置方法win10 5.0 X64 VS2015 72
2023-09-11 14:16:46 时间

1、下载地址:https://www.boost.org/users/history/version_1_72_0.html     或者  百度网盘下载:链接:https://pan.baidu.com/s/1-q6IJWcCrxZMsG_KSX1EQA       提取码:z2l4 ;

2、解压到安装目录:D:\Program Files\boost\boost_1_72_0 或者安装至相应盘的目录(建议没必要安装在C盘,因为比较大,当然C盘够大的,无所谓);

3、打开cmd,执行:cd  E:\Program Files\boost\boost_1_72_0\tools\build\src\engine    再执行:build.bat gcc,执行结果如下:

(这里的gcc命令是取自DEVC++,PATH里面添加一下地址,如:D:\Program Files\Dev-Cpp\MinGW64\bin)

备注:当然直接用CMD运行,可能存在如下图的问题:

解决办法:D:\Program Files\boost_1_72_0\tools\build\src\engine目下双击运行“build.bat”,运行结果生成“bjam.exe”和“b2.exe”

4、把目录下生成的 bjam.exe 复制到boost根目录 D:\Program Files\boost\boost_1_72_0下并且将"VCRUNTIME140D.dll"拷贝至此目录下;打开cmd,执行  cd  D:\Program Files\boost\boost_1_72_0;若你遇到上述问题,为节省时间建议直接双击“bjam.exe”,等待运行结束自动关闭此窗口。

注意:若提示无法找到"VCRUNTIME140D.dll"拷贝至你所在目录下,如 D:\Program Files\boost\boost_1_72_0,便可解决。

运行完的文件夹内容:

 

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

新建两个系统变量

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

环境变量二:变量名:BOOST_LIBRARYDIR,变量值:D:\boost_1_72_0\lib64-msvc-14.1

系统变量新建一个 Path

D:\boost_1_72_0\lib64-msvc-14.1  

5、建议在“View”->“other Windows”->“Property Manager”->“Debug X64”新建一个“.props”自己命名一个,在此进行配置避免配置的开源库多,存在一些问题。在此我的命名为“CGAL.5.0.2_Configuration.props”

 

6、C++附加包含目录、C++附加库目录就是上面的 D:\Program Files\boost_1_72_0\boost和 D:\Program Files\boost_1_72_0\stage\lib   如下图所示:

Properties->C/C++->General->Additional Include Directories添加路径 D:\Program Files\boost_1_72_0\boost

Properties->Linker->General->Additional Library Directories添加目录 D:\Program Files\boost_1_72_0\stage\lib 

 

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

libboost_atomic-vc140-mt-gd-x32-1_72.lib
libboost_atomic-vc140-mt-gd-x64-1_72.lib
libboost_atomic-vc140-mt-x32-1_72.lib
libboost_atomic-vc140-mt-x64-1_72.lib
libboost_chrono-vc140-mt-gd-x32-1_72.lib
libboost_chrono-vc140-mt-gd-x64-1_72.lib
libboost_chrono-vc140-mt-x32-1_72.lib
libboost_chrono-vc140-mt-x64-1_72.lib
libboost_container-vc140-mt-gd-x32-1_72.lib
libboost_container-vc140-mt-gd-x64-1_72.lib
libboost_container-vc140-mt-x32-1_72.lib
libboost_container-vc140-mt-x64-1_72.lib
libboost_context-vc140-mt-gd-x32-1_72.lib
libboost_context-vc140-mt-gd-x64-1_72.lib
libboost_context-vc140-mt-x32-1_72.lib
libboost_context-vc140-mt-x64-1_72.lib
libboost_contract-vc140-mt-gd-x32-1_72.lib
libboost_contract-vc140-mt-gd-x64-1_72.lib
libboost_contract-vc140-mt-x32-1_72.lib
libboost_contract-vc140-mt-x64-1_72.lib
libboost_coroutine-vc140-mt-gd-x32-1_72.lib
libboost_coroutine-vc140-mt-gd-x64-1_72.lib
libboost_coroutine-vc140-mt-x32-1_72.lib
libboost_coroutine-vc140-mt-x64-1_72.lib
libboost_date_time-vc140-mt-gd-x32-1_72.lib
libboost_date_time-vc140-mt-gd-x64-1_72.lib
libboost_date_time-vc140-mt-x32-1_72.lib
libboost_date_time-vc140-mt-x64-1_72.lib
libboost_exception-vc140-mt-gd-x32-1_72.lib
libboost_exception-vc140-mt-gd-x64-1_72.lib
libboost_exception-vc140-mt-x32-1_72.lib
libboost_exception-vc140-mt-x64-1_72.lib
libboost_fiber-vc140-mt-gd-x32-1_72.lib
libboost_fiber-vc140-mt-gd-x64-1_72.lib
libboost_fiber-vc140-mt-x32-1_72.lib
libboost_fiber-vc140-mt-x64-1_72.lib
libboost_filesystem-vc140-mt-gd-x32-1_72.lib
libboost_filesystem-vc140-mt-gd-x64-1_72.lib
libboost_filesystem-vc140-mt-x32-1_72.lib
libboost_filesystem-vc140-mt-x64-1_72.lib
libboost_graph-vc140-mt-gd-x32-1_72.lib
libboost_graph-vc140-mt-gd-x64-1_72.lib
libboost_graph-vc140-mt-x32-1_72.lib
libboost_graph-vc140-mt-x64-1_72.lib
libboost_iostreams-vc140-mt-gd-x32-1_72.lib
libboost_iostreams-vc140-mt-gd-x64-1_72.lib
libboost_iostreams-vc140-mt-x32-1_72.lib
libboost_iostreams-vc140-mt-x64-1_72.lib
libboost_locale-vc140-mt-gd-x32-1_72.lib
libboost_locale-vc140-mt-gd-x64-1_72.lib
libboost_locale-vc140-mt-x32-1_72.lib
libboost_locale-vc140-mt-x64-1_72.lib
libboost_log-vc140-mt-gd-x32-1_72.lib
libboost_log-vc140-mt-gd-x64-1_72.lib
libboost_log-vc140-mt-x32-1_72.lib
libboost_log-vc140-mt-x64-1_72.lib
libboost_log_setup-vc140-mt-gd-x32-1_72.lib
libboost_log_setup-vc140-mt-gd-x64-1_72.lib
libboost_log_setup-vc140-mt-x32-1_72.lib
libboost_log_setup-vc140-mt-x64-1_72.lib
libboost_math_c99-vc140-mt-gd-x32-1_72.lib
libboost_math_c99-vc140-mt-gd-x64-1_72.lib
libboost_math_c99-vc140-mt-x32-1_72.lib
libboost_math_c99-vc140-mt-x64-1_72.lib
libboost_math_c99f-vc140-mt-gd-x32-1_72.lib
libboost_math_c99f-vc140-mt-gd-x64-1_72.lib
libboost_math_c99f-vc140-mt-x32-1_72.lib
libboost_math_c99f-vc140-mt-x64-1_72.lib
libboost_math_c99l-vc140-mt-gd-x32-1_72.lib
libboost_math_c99l-vc140-mt-gd-x64-1_72.lib
libboost_math_c99l-vc140-mt-x32-1_72.lib
libboost_math_c99l-vc140-mt-x64-1_72.lib
libboost_math_tr1-vc140-mt-gd-x32-1_72.lib
libboost_math_tr1-vc140-mt-gd-x64-1_72.lib
libboost_math_tr1-vc140-mt-x32-1_72.lib
libboost_math_tr1-vc140-mt-x64-1_72.lib
libboost_math_tr1f-vc140-mt-gd-x32-1_72.lib
libboost_math_tr1f-vc140-mt-gd-x64-1_72.lib
libboost_math_tr1f-vc140-mt-x32-1_72.lib
libboost_math_tr1f-vc140-mt-x64-1_72.lib
libboost_math_tr1l-vc140-mt-gd-x32-1_72.lib
libboost_math_tr1l-vc140-mt-gd-x64-1_72.lib
libboost_math_tr1l-vc140-mt-x32-1_72.lib
libboost_math_tr1l-vc140-mt-x64-1_72.lib
libboost_prg_exec_monitor-vc140-mt-gd-x32-1_72.lib
libboost_prg_exec_monitor-vc140-mt-gd-x64-1_72.lib
libboost_prg_exec_monitor-vc140-mt-x32-1_72.lib
libboost_prg_exec_monitor-vc140-mt-x64-1_72.lib
libboost_program_options-vc140-mt-gd-x32-1_72.lib
libboost_program_options-vc140-mt-gd-x64-1_72.lib
libboost_program_options-vc140-mt-x32-1_72.lib
libboost_program_options-vc140-mt-x64-1_72.lib
libboost_random-vc140-mt-gd-x32-1_72.lib
libboost_random-vc140-mt-gd-x64-1_72.lib
libboost_random-vc140-mt-x32-1_72.lib
libboost_random-vc140-mt-x64-1_72.lib
libboost_regex-vc140-mt-gd-x32-1_72.lib
libboost_regex-vc140-mt-gd-x64-1_72.lib
libboost_regex-vc140-mt-x32-1_72.lib
libboost_regex-vc140-mt-x64-1_72.lib
libboost_serialization-vc140-mt-gd-x32-1_72.lib
libboost_serialization-vc140-mt-gd-x64-1_72.lib
libboost_serialization-vc140-mt-x32-1_72.lib
libboost_serialization-vc140-mt-x64-1_72.lib
libboost_stacktrace_basic-vc140-mt-gd-x32-1_72.lib
libboost_stacktrace_basic-vc140-mt-x32-1_72.lib
libboost_stacktrace_noop-vc140-mt-gd-x32-1_72.lib
libboost_stacktrace_noop-vc140-mt-gd-x64-1_72.lib
libboost_stacktrace_noop-vc140-mt-x32-1_72.lib
libboost_stacktrace_noop-vc140-mt-x64-1_72.lib
libboost_stacktrace_windbg-vc140-mt-gd-x64-1_72.lib
libboost_stacktrace_windbg-vc140-mt-x64-1_72.lib
libboost_stacktrace_windbg_cached-vc140-mt-gd-x64-1_72.lib
libboost_stacktrace_windbg_cached-vc140-mt-x64-1_72.lib
libboost_system-vc140-mt-gd-x32-1_72.lib
libboost_system-vc140-mt-gd-x64-1_72.lib
libboost_system-vc140-mt-x32-1_72.lib
libboost_system-vc140-mt-x64-1_72.lib
libboost_test_exec_monitor-vc140-mt-gd-x32-1_72.lib
libboost_test_exec_monitor-vc140-mt-gd-x64-1_72.lib
libboost_test_exec_monitor-vc140-mt-x32-1_72.lib
libboost_test_exec_monitor-vc140-mt-x64-1_72.lib
libboost_thread-vc140-mt-gd-x32-1_72.lib
libboost_thread-vc140-mt-gd-x64-1_72.lib
libboost_thread-vc140-mt-x32-1_72.lib
libboost_thread-vc140-mt-x64-1_72.lib
libboost_timer-vc140-mt-gd-x32-1_72.lib
libboost_timer-vc140-mt-gd-x64-1_72.lib
libboost_timer-vc140-mt-x32-1_72.lib
libboost_timer-vc140-mt-x64-1_72.lib
libboost_type_erasure-vc140-mt-gd-x32-1_72.lib
libboost_type_erasure-vc140-mt-gd-x64-1_72.lib
libboost_type_erasure-vc140-mt-x32-1_72.lib
libboost_type_erasure-vc140-mt-x64-1_72.lib
libboost_unit_test_framework-vc140-mt-gd-x32-1_72.lib
libboost_unit_test_framework-vc140-mt-gd-x64-1_72.lib
libboost_unit_test_framework-vc140-mt-x32-1_72.lib
libboost_unit_test_framework-vc140-mt-x64-1_72.lib
libboost_wave-vc140-mt-gd-x32-1_72.lib
libboost_wave-vc140-mt-gd-x64-1_72.lib
libboost_wave-vc140-mt-x32-1_72.lib
libboost_wave-vc140-mt-x64-1_72.lib
libboost_wserialization-vc140-mt-gd-x32-1_72.lib
libboost_wserialization-vc140-mt-gd-x64-1_72.lib
libboost_wserialization-vc140-mt-x32-1_72.lib
libboost_wserialization-vc140-mt-x64-1_72.lib

添加如图所示:


上述Boost.1_72_0.txt文本中所包含的.lib文件可在此链接下载:

链接:https://pan.baidu.com/s/1_oNQJJTMrVqweHr-RUPF3Q 
提取码:uly5

测试代码:

 

#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;
}

 

安装CGAL_5.0.2以及VS2015配置

1、下载的是 .exe 还是 .zip,前者进行安装,后者进行解压,效果都一样,贴一个CGAL_5.0.2的下载链接:

链接:https://pan.baidu.com/s/1jE0ZeLvBAwAwcGaqUV6rlQ 
提取码:h676

2、检测是否安装正确,其一,第一,检查 ./CGAL/auxiliary/gmp/ 下是否有下图所示的内容;

 

其二,检查系统变量是否有 CGAL_DIR(变量值为 D:\CGAL) 这一变量,没有的话,自行添加!查看方法:“此电脑”->“属性”->“高级系统设置”->“高级”->“环境变量”->“系统变量”

其三,检查系统变量 Path 下是否增加C:\dev\CGAL-5.0.2\auxiliary\gmp,没有的话,自行添加!

3、CMake编译CGAL

(1)以管理员身份打开CMake,

  • Where is the source code:把 CMakeLists.txt 拖进来就好
  • Where to build the binaries:我选择新建 build 文件夹

注意:

第一次configure会出现一些红色,按照以下步骤修改:

其一,取消只编译头文件:CGAL_HEARDER_ONLY对应的勾取消

其二,将CMAKE_INSTALL_PREFIX改为我们的build文件,这样生成的lib,bin等文件就会位于build文件夹下

再点击configure至红色消失,然后点击generate,随后open project并在debugX64 和releaseX64 下分别生成ALL_BUILD

然后就可以在我们的build文件夹下找到对应的dll和lib,以及头文件。

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

4、解压出来的 include 目录、解压出来的 auxiliary\gmp\include 目录、以及 build 下的 include 目录都有用,共同作为 include 库;解压出来的 auxiliary\gmp\lib 目录、build 下的 lib 目录都有用,共同作为 lib 库,本文将编译生成的拷贝至解压或安装所在目录。将build文件夹下的bin文件夹拷贝至C:\dev\CGAL-5.0.2目录下(自己安装路径)。

5、工程属性改成 x64 的平台,debug 和 release 根据你的 CGAL 的配置来。
附加包含目录:Properties->C/C++->General->Additional Include Directories添加路径;
./boost/  ;  C:\dev\CGAL-5.0.2\include  ;  C:\dev\CGAL-5.0.2\auxiliary\gmp\include;

 

附加库目录(两个 CGAL 的加两个 boost 的)

Properties->Linker->General->Additional Library Directories添加目录
C:\dev\CGAL-5.0.2;D:\Program Files\boost_1_72_0\lib64-msvc-14.1;C:\dev\CGAL-5.0.2\auxiliary\gmp\lib;./stage/lib/

添加.lib文件

Linker->Input->Additional Dependencies添加CGAL_5.0.2的.lib文件;

CGAL_5.0.2编译及安装生成的.lib文件

CGAL-vc140-mt-5.0.2.lib
CGAL-vc140-mt-gd-5.0.2.lib
CGAL_Core-vc140-mt-5.0.2.lib
CGAL_Core-vc140-mt-gd-5.0.2.lib
CGAL_ImageIO-vc140-mt-5.0.2.lib
CGAL_ImageIO-vc140-mt-gd-5.0.2.lib
libgmp-10.lib
libmpfr-4.lib

生成CGAL_5.0.2文件的.bat文件下载链接:链接:https://pan.baidu.com/s/1MzSUAHAyZpjPxXeasLLklA 
提取码:qcup

使用方法:将生产的.lib文件拷贝至一个文件夹内,然后运行这个.bat生成一个.txt文本,其中文本内包含所有.lib文件名,拷贝至Additional Dependencies进行添加。

 

测试代码:

#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;
}

 

参考博文:

1、https://blog.csdn.net/qq_34719188/article/details/89850705

2、https://developers.weixin.qq.com/community/develop/article/doc/000aa292a74b98c0c61a5664756813

3、https://blog.csdn.net/qq_36242312/article/details/104814360