运行环境:Mac
服务器:asio_kcp
编译直接执行主目录下的allmake.sh文件,不过编译前需要安装一些依赖库。
依赖库:
$ ./bootstrap.sh
#服务器引用的mt库,需要指定下编译多线程库
$ sudo ./b2 --layout=tagged threading=multi install
-
Protobuf3.5.0
编译和安装参考自带的README.md
$ sudo brew install autoconf automake libtool curl make g++ unzip
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
-
Muduo
asio_kcp项目third_party目录下自带muduo压缩包,解压后,先打上mac的diff patch。
$ patch -p1 < MacOSX.diff
然后修改muduo/CMakeLists.txt文件
CXX_FLAGS中添加下面两行:
-D__GXX_EXPERIMENTAL_CXX0X__
-std=c++11
注释掉 -march=native
注释掉 -Werror
注释掉 set(CMAKE_CXX_COMPILER "clang++")
然后在muduo目录下执行:
$ CC=gcc CXX=g++ BUILD_DIR=./build BUILD_TYPE=release BUILD_NO_EXAMPLES=1 . ./build.sh
编译完成
-
g2log/gmock/gtest
可以直接修改third_party目录下的build.sh文件进行编译,注意muduo库最好按照上面的步骤单独编译。
可选库:
$ make static dynamic cryptest.exe
有个比较方便的管道Pipelining模式,所有新建的对象会传递到上级filter,然后由其负责销毁。比如MD5编码可以参考如下写法:
// Memory malloc/free detail see: https://www.cryptopp.com/wiki/Pipelining
static std::string EncodeMD5(const std::string &strIn)
{
std::string digest;
CryptoPP::Weak::MD5 md5;
CryptoPP::StringSource(strIn, true,
new CryptoPP::HashFilter(md5,
new CryptoPP::HexEncoder(
new CryptoPP::StringSink(digest), false)));
return digest;
}
-
Json库RapidJSON
没啥说的,鹅厂出品,战神制作组都在用。如果不在意速度,可以试下nlohmann_json,易用度更接近c++11和脚本语言。 -
日志库spdlog
速度和易用性都还不错,还带Console输出各种颜色和格式。