编译

#编译器要求

各平台需要安装的编译器如下:

#xmake

CO 推荐使用 xmake 作为构建工具。

#安装 xmake

windows, mac 与 debian/ubuntu 可以直接去 xmake 的 release 页面下载安装包,其他系统请参考 xmake 的 Installation 说明。

xmake 在 linux 上默认禁止 root 用户编译,ruki 说不安全,可以在 ~/.bashrc 中加上下面的一行,启用 root 编译:

export XMAKE_ROOT=y

#设置 xmake github 镜像代理

xmake 可能会从 github 上拉取三方库,国内 github 下载速度较慢,可以用下面的方式设置镜像代理:

  • 安装 xmake 2.5.4 以上版本。
  • 执行 xmake show -l envs 命令查找 XMAKE_GLOBALDIR,在该环境变量指向的目录下面创建一个 pac.lua 文件,在文件里加上下面的代码:
function mirror(url)
    return url:gsub("github.com", "hub.fastgit.org")
end
function main() end

#快速构建

在 CO 根目录执行下述命令构建:

xmake -a    # 构建所有项目 (libco, gen, test, unitest)

若需要使用 HTTP 或 SSL 特性,则可以用下面的命令构建:

xmake f --with_libcurl=true --with_openssl=true
xmake -a

启用 HTTP 或 SSL 特性时,xmake 会自动从网络安装 libcurl 与 openssl,可能需要花点时间。

命令行中的 -a 表示构建 CO 中的所有项目,如果不加 -a,默认只会构建 libco。另外,可以用 -v-vD 让 xmake 打印更详细的编译信息:

xmake -v -a

#编译选项

Xmake 提供了 xmake f 命令,用于配置编译选项。需要注意的是,多个配置选项必须在一条 xmake f 命令中完成,若多次执行 xmake f 命令,后面的会覆盖前面的配置。

#编译 debug 版本的 libco

xmake f -m debug
xmake -v

#编译动态库

xmake f -k shared
xmake -v

注意 CO 在 Windows 平台不支持动态库。

#编译 32 位的 libco

  • Windows
xmake f -a x86
xmake -v
  • Linux
xmake f -a i386
xmake -v

xmake f 命令中的 -a 表示 arch,不同平台支持的 arch 可能不一样,可以执行 xmake f --help 命令查看详情。

#Windows 平台指定 vs_runtime

CO 在 Windows 平台默认使用 MT 运行库,用户可以用下面的命令配置 vs_runtime:

xmake f --vs_runtime=MD
xmake -v

#Android 与 IOS 支持

CO 在 Android 与 IOS 平台也能编译,详情见 Github Actions。由于作者没有前端开发的经验,暂时未在 Android 与 IOS 上测试。

  • android
xmake f -p android --ndk=/path/to/android-ndk-r21
xmake -v
  • ios
xmake f -p iphoneos
xmake -v

#构建及运行 unitest 代码

co/unitest 是单元测试代码,可以执行下述命令构建及运行:

xmake -b unitest        # build unitest
xmake r unitest -a      # 执行所有单元测试
xmake r unitest -os     # 执行单元测试 os
xmake r unitest -json   # 执行单元测试 json

#构建及运行 test 代码

co/test 是一些测试代码,在 co/test 目录或其子目录下增加 xx.cc 源文件,然后在 CO 根目录下执行 xmake -b xx 即可构建。

xmake -b flag                # 编译 test/flag.cc
xmake -b log                 # 编译 test/log.cc
xmake -b json                # 编译 test/json.cc
xmake -b rpc                 # 编译 test/rpc.cc

xmake r flag -xz             # 测试 flag 库
xmake r log                  # 测试 log 库
xmake r log -cout            # 终端也打印日志
xmake r log -perf            # log 库性能测试
xmake r json                 # 测试 json
xmake r rpc                  # 启动 rpc server
xmake r rpc -c               # 启动 rpc client

#构建及使用 gen

xmake -b gen
cp gen /usr/local/bin/
gen hello_world.proto

proto 文件格式可以参考 hello_world.proto

#安装 libco

构建完 libco 后,可以用 xmake install 命令安装 libco 到指定的目录:

xmake install -o pkg          # 打包安装到 pkg 目录
xmake i -o pkg                # 同上
xmake i -o /usr/local         # 安装到 /usr/local 目录

#从 xmake repo 安装 libco

xrepo install -f "openssl=true,libcurl=true" co

#cmake

izhengfan 帮忙提供了 cmake 编译脚本:

  • 默认只编译 libco。
  • 编译生成的库文件在 build/lib 目录下,可执行文件在 build/bin 目录下。
  • 可以用 BUILD_ALL 指定编译所有项目。
  • 可以用 CMAKE_INSTALL_PREFIX 指定安装目录。
  • cmake 只提供简单的编译选项,若需要更复杂的配置,请使用 xmake。

#默认构建 libco

mkdir build && cd build
cmake ..
make -j8

#构建所有项目

mkdir build && cd build
cmake .. -DBUILD_ALL=ON -DCMAKE_INSTALL_PREFIX=pkg
make -j8

#启用 HTTP 与 SSL 特性

使用 HTTP 或 SSL 特性,需要安装 libcurl, zlib, 以及 openssl 1.1.0 或以上版本。

mkdir build && cd build
cmake .. -DBUILD_ALL=ON -DWITH_LIBCURL=ON
make -j8

#从 vcpkg 安装 libco

vcpkg install co:x64-windows

# HTTP & SSL support
vcpkg install co[libcurl,openssl]:x64-windows