C++开发环境搭建

前言

WonderTrader开源以来,虽然没有正式做过推广,但是逐渐有了第一批吃螃蟹的用户。在此WonderTrader团队对这些用户深表感谢,希望WonderTrader能够获得大家更多的认可。 在用户的反馈中,我们逐渐发现,除了直接使用wtpy进行回测和交易的用户,还有一批对源码有直接需求的用户。他们在使用过程中遇到的最大问题是如何编译源码。WonderTrader的官方文档中,对开发环境做了简单的介绍,但是并不深入,所以这些用户在搭建开发环境的过程中遇到了不少问题。

本文的主要目的就是帮助用户解决WonderTrader的源码的编译问题

共享资源

因为笔者长期在开发一线,平时在工作中会用到很多方便易用的工具,WonderTrader的开发中也有涉及。为了方便大家下载使用,本文中涉及到的一些好用的工具,笔者都统一放到百度云盘里共享出来,大家可以根据需要自行下载。文中会有多出涉及到从共享资源中下载文件,后面就不再赘述,统一用共享资源代称。

下载连接:https://pan.baidu.com/s/1Bdxh_PgjqHMzuGjl9ernhg

提取码: d6bh

../../_images/1.png

Linux本地开发环境搭建

1、系统准备

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

../../_images/11.png

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

../../_images/10.png

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

$ docker pull ubuntu:18.04

../../_images/9.png

然后进入到docker容器中,命令如下:

$ docker run -it ubuntu:18.04 /bin/bash

2、安装开发工具

直接执行以下命令,安装gcc8ubuntu 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的版本号

../../_images/12.png

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

../../_images/14.png

安装7z解压工具,用于解压预编译的依赖包

$ sudo apt-get install p7zip-full

../../_images/15.png

3、从共享资源中下载mydes_gcc8.4.0.7z并上传到linux

  • 如果是通过terminal工具连接的话,推荐使用WindTerm上传

../../_images/16.png

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

../../_images/13.png

  • 或者直接使用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

编译成功截图如下:

../../_images/18.png

编译完成以后,就可以直接从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/

../../_images/19.png

../../_images/20.png

或者直接从共享资源中直接下载该安装器

2、从共享资源中下载vc141deps_win.7z,并解压到E:/vc141depends目录

../../_images/21.png

3、配置环境变量

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

../../_images/22.png

设置好了以后,保存环境变量,即可生效,如果没有生效,可以重启电脑。win10下要注意一下使用管理员身份运行RapidEE,不然保存可能会失败!

4、安装git

下载git并安装:https://git-scm.com/download/win

../../_images/23.png

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

../../_images/24.png

5、下载代码

选择一个目录,然后右键点击该目录,选择“Git克隆”菜单

../../_images/25.png

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

../../_images/26.png

6、编译代码

进入到wondertradersrc目录下

../../_images/27.png

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

../../_images/28.png

../../_images/29.png

7、复制到wtpy

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

../../_images/17.png

Docker开发环境搭建

WonderTrader0.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++11gcc8以上才支持C++17。经过测试,Centos7下的的gcc8的版本为gcc8.3.1,该版本下编译还是不成功,而Ubuntu 18.04下的gcc8gcc8.4.0,该版本下就能够编译成功。 由于gcc版本的要求,开发环境搭建会变得更加复杂,为了方便大家使用,就提供了内置的Dockerfile。 在wondertrader/docker下,有两个Dockerfile

  • Dockerfile:

    • 这个dockerfile直接拉取dockerhub上提交的wondertrader镜像,镜像大小约500M

    • wondertrader镜像,基于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 .

运行截图如下:

../../_images/2.png

2、运行容器

本地镜像构建好了,就可以使用以下命令运行容器了

$ docker run -it mycpp /bin/bash

运行截图如下: ../../_images/3.png

3、编译构建

将目录转到/home/wondertrader/src,执行编译脚本即可

$ cd /home/wondertrader/src
$ bash build_release.sh