C++开发环境搭建
前言
WonderTrader开源以来,虽然没有正式做过推广,但是逐渐有了第一批吃螃蟹的用户。在此WonderTrader团队对这些用户深表感谢,希望WonderTrader能够获得大家更多的认可。
在用户的反馈中,我们逐渐发现,除了直接使用wtpy进行回测和交易的用户,还有一批对源码有直接需求的用户。他们在使用过程中遇到的最大问题是如何编译源码。WonderTrader的官方文档中,对开发环境做了简单的介绍,但是并不深入,所以这些用户在搭建开发环境的过程中遇到了不少问题。
本文的主要目的就是帮助用户解决WonderTrader的源码的编译问题。
共享资源
因为笔者长期在开发一线,平时在工作中会用到很多方便易用的工具,WonderTrader的开发中也有涉及。为了方便大家下载使用,本文中涉及到的一些好用的工具,笔者都统一放到百度云盘里共享出来,大家可以根据需要自行下载。文中会有多出涉及到从共享资源中下载文件,后面就不再赘述,统一用共享资源代称。
下载连接:https://pan.baidu.com/s/1Bdxh_PgjqHMzuGjl9ernhg
提取码: d6bh

Linux本地开发环境搭建
1、系统准备
WonderTrader官方的Linux开发环境为Ubuntu Server 18.04 LTS,可以使用WSL、虚拟机或者Docker进行系统初始化的工作。

WSL可以直接在应用商店,安装Ubuntu 18.04.6 LTS,如下图:

如果使用Docker,可以直接使用以下命令拉取ubuntu:18.04的镜像:
$ docker pull ubuntu:18.04

然后进入到docker容器中,命令如下:
$ docker run -it ubuntu:18.04 /bin/bash
2、安装开发工具
直接执行以下命令,安装gcc8,ubuntu 18.04,对应的gcc8的版本为gcc8.4.0
# 安装编译工具
$ apt-get install -y git
$ apt-get install -y gcc-8
$ apt-get install -y g++-8
$ apt-get install -y cmake
由于Ubuntu 18.04默认安装的gcc版本是7.5.0,安装cmake的时候会自动安装gcc7.5.0,所以我们还需要对gcc命令符号做一个处理
# 将gcc符号链接到gcc8
$ rm /usr/bin/gcc
$ ln -s /usr/bin/gcc-8 /usr/bin/gcc
$ ln -s /usr/bin/g++-8 /usr/bin/g++
使用gcc --v查看gcc的版本号

使用cmake --version查看cmake的版本号

安装7z解压工具,用于解压预编译的依赖包
$ sudo apt-get install p7zip-full

3、从共享资源中下载mydes_gcc8.4.0.7z并上传到linux
如果是通过terminal工具连接的话,推荐使用WindTerm上传

如果是WSL的话,可以直接访问Windows的文件系统

或者直接使用scp命令行上传
$ scp -r mydes_gcc8.4.0.7z root@192.168.61.128:/home
4、将mydes_gcc8.4.0.7z解压到/home下
$ sudo 7za x mydes_gcc8.4.0.7z /home
5、拉取WonderTrader的源码
$ cd /home
$ sudo git clone https://github.com/wondertrader/wondertrader.git
6、进入src目录,执行编译脚本
$ bash build_release.sh
编译成功截图如下:

编译完成以后,就可以直接从src目录下的build/bin中下载需要的文件即可。
7、复制二进制文件到wtpy
如果要将linux下编译的二进制文件,复制到wtpy中,还可以使用文件复制脚本copy_bins_linux.sh,命令行如下:
$ bash copy_bins_linux.sh /home/wpy
Windows开发环境搭建
1、安装vs2017社区版
首先下载vs2017的安装器,下载地址如下:
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/


或者直接从共享资源中直接下载该安装器
2、从共享资源中下载vc141deps_win.7z,并解压到E:/vc141depends目录

3、配置环境变量
从共享资源中下载环境变量编辑器RapidEE到本地,解压以后运行。
新建一个名为MyDepends141的环境变量,并将值设置为依赖库解压目录E:/vc141depends

设置好了以后,保存环境变量,即可生效,如果没有生效,可以重启电脑。win10下要注意一下使用管理员身份运行RapidEE,不然保存可能会失败!
4、安装git
下载git并安装:https://git-scm.com/download/win

下载tortoisegit并安装:https://tortoisegit.org/download/

5、下载代码
选择一个目录,然后右键点击该目录,选择“Git克隆”菜单

URL设置为:https://github.com/wondertrader/wondertrader.git

6、编译代码
进入到wondertrader的src目录下

双击运行wondertrader.sln,打开以后在解决方案上右键点击,选择“生成解决方案”就进入了编译过程


7、复制到wtpy
进入到wondertrader目录,双击运行copy_bins_win.bat批处理文件,就可以自动将编译好的二进制文件复制到wtpy对应的目录下了,运行截图如下:

Docker开发环境搭建
WonderTrader的0.9.8版本,将C++标准升级到了C++17。主要因为0.9.8版本,引入了一个新的hash容器ankerl::unordered_dense,该容器相比以前的robin_map,性能可以提升1/3左右,但是该容器必须要求C++17以上的标准。
鉴于此,WonderTrader的标准也升级到了C++17。但是原来的编译环境Centos7 + gcc 4.8.5,只支持C++11,gcc8以上才支持C++17。经过测试,Centos7下的的gcc8的版本为gcc8.3.1,该版本下编译还是不成功,而Ubuntu 18.04下的gcc8为gcc8.4.0,该版本下就能够编译成功。
由于gcc版本的要求,开发环境搭建会变得更加复杂,为了方便大家使用,就提供了内置的Dockerfile。
在wondertrader/docker下,有两个Dockerfile:
Dockerfile:
这个
dockerfile直接拉取dockerhub上提交的wondertrader镜像,镜像大小约500Mwondertrader镜像,基于ubuntu18.04进行构建,安装了gcc8.4.0等编译工具并且自动从
gitee上拉取源码基于该文件构建镜像可以使用命令:
docker build -t yourimagename -f Dockerfile .构建完成以后,要启动容器,可以使用命令:
docker run -it yourimagename /bin/bash
Dockerfile_ubt:
这个
dockerfile直接基于ubuntu18.04镜像构建,镜像大小约66M,拉取速度较快拉取完以后,再安装
gcc8.4.0等编译工具并且自动从
gitee上拉取源码基于该文件构建镜像可以使用命令:
docker build -t yourimagename -f Dockerfile_ubt .构建完成以后,要启动容器,可以使用命令:
docker run -it yourimagename /bin/bash
1、构建自己的本地镜像
用户可以根据自己的需要,通过这两个Dockerfile直接构建自己的开发镜像,命令行如下:
$ docker build -t wtcpp -f Dockerfile .
运行截图如下:

2、运行容器
本地镜像构建好了,就可以使用以下命令运行容器了
$ docker run -it mycpp /bin/bash
运行截图如下:

3、编译构建
将目录转到/home/wondertrader/src,执行编译脚本即可
$ cd /home/wondertrader/src
$ bash build_release.sh