# 代码目录结构
- hi3518: RN1 摄像头软件代码
- server: video gateway代码
- vendor: 所有第三方依赖库的代码和编译出来的 lib 和 include

# 编译步骤
## 环境设置
### 手动准备环境
- 安装XM提供的编译包: 链接: https://pan.baidu.com/s/1jx9PSU5Xqtu336Y3J0GDYQ 提取码: auw7
解压, 然后编译

### 虚拟机镜像
- 下载 virtual box 的虚拟机镜像到本地 url: 
- 使用 virtual box 导入虚拟机
- clone源代码
- 把宿主机含有代码的路径 mount 到虚拟机中.  虚拟机的 root 密码为 123456
  - 目前虚拟机镜像的 mount 路径为/mnt/shared 第一次导入的时候会提示, 可以修改成指定的路径. 

### 切换交叉编译环境

```
su -
source /root/setenv.sh
```

### 编译依赖库
- clone vendor目录下各依赖的第三方库以及ffmpeg源代码并编译安装
    - 其中 fmt, zmq, jsoncons, spdlog 是hi3518及server都用到的
    - libav*(ffmpeg)只有server用到
    - paho.mqtt.c只有hi3518用到
- 可以直接到 github 中按照依赖库的名字搜索. 下载 latest release 的 zip 包到任意路径, 然后按照github 仓库中的 readme 进行编译和安装. 
    - 这里需要注意的是, 如果宿主机是 windows 或者 mac, mount 到虚拟机中的路径不支持创建 symlink. 所以不能下载到 mount 的路径下编译. 需要copy 到虚拟机中的其他目录. 
    编译完成之后再把 lib 和 include 里的内容 copy 到 相应的路径中, 例如vendor/hi3518/include
    - 指定安装路径的方法是指定 cmake 的参数 -DCMAKE_INSTALL_PREFIX  例如
    - 
    ```
    mkdir build
    mkdir /root/build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX=/root/build ..
    make install
    
    ## copy inlude 和 lib 中的内容
    ```
    
    - hi3518用到的库的安装路径是 <source_path>/vendor/hi3518
    - server用到的库的安装路径是 <source_path>/vendor/x64
    
### 编译
  - evcamera
    在 hi3518 下运行 make 就可以编译出一个独立的可执行文件 evcamera. 
  
  - vgw
    在 server 下运行 make 就可以编译出一个独立的可执行文件 vgw. 

    vgw 运行只需要依赖两个环境变量
    * DARWIN_URL   easy darwin 的 url, 如果没有, 使用默认的 rtsp://evcloudsvc.ilabservice.cloud:554
    * LOG_LEVEL   日志输出等级.  如果没有, 日志 level 为 debug

    