Windows

本页详细介绍在windows下的编译调试工作

前期准备

  • C++编译器,建议Visual Studio 2015

  • python,推荐使用Ananconda

  • cmake >= 3.0.0

  • boost >= 1.58.0

编译指令

下面的指令请在visual studio命令行中运行,确保在命令行中可以运行编译器cl和msbuild。

build_windows.bat

用户可以看到,在build_windows.bat文件的头部,有以下参数变量需要设置:

set BOOST_ROOT=D:\dev\boost_1_65_1
set BOOST_LIBRARYDIR=D:\dev\boost_1_65_1\lib64-msvc-14.0
set INCLUDE=%BOOST_ROOT%;D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
set QL_DIR=%CD%\QuantLib
set QLEXT_DIR=%CD%\QuantLib-Ext
set BUILD_TYPE=Release
set ADDRESS_MODEL=Win64
set MSVC_RUNTIME=dynamic
set VS_VERSION=Visual Studio 14 2015

其中:

  • BOOST_ROOT:boost的根目录

  • BOOST_LIBRARYDIR:boost库文件根目录

  • INCLUDE:c/c++编译器的头文件寻找目录

  • QL_DIR:quantlib项目根目录

  • QLEXT_DIR:quantlibext项目根目录

  • BUILD_TYPE:编译类型

  • ADDRESS_MODEL:32位或者64位选择

  • MSVC_RUNTIME:c/c++运行时链接类型

  • VS_VERSION:Visual Studio版本

大部分变量只需保留原值,一般来说用户只需指定下面的变量指向正确的位置:

set BOOST_ROOT=D:\dev\boost_1_65_1
set BOOST_LIBRARYDIR=D:\dev\boost_1_65_1\lib64-msvc-14.0
set INCLUDE=%BOOST_ROOT%;D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include

调试方法

同样的按照上面的方法编译,只是需要将编译类型改为调试模式:

set BUILD_TYPE=Debug

在编译完成以后,我们就得到了带debug信息的可运行文件。这个时候就可以使用各种熟悉的可视化工具进行debug。下面我们以Visual Studio Code为例,介绍如何进行debug。

  • 在Visual Sutdio Code中打开项目目录:

  • 安装c/c++编译调试组件,安装完成后重启编辑器

  • 配置调试

假设我们要调试QuantLib/examples/Bonds的例子,我们在debug窗口下创建新的配置:

选择c/c++(windows)

输入配置信息,例如:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "example_bond",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/QuantLib/build/examples/Bonds/Debug/Bonds.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true
        }
    ]
}

最重要的是上面的program信息,需要指向需要调试的可运行文件,然后保存。

  • 设置断点调试

在QuantLib/example/Bonds.cpp文件中设置断点,然后启动调试器:

即可进入调试:

Last updated