Sogou workflow 安装
#1 环境
macOS 10.15.5
C++14
OpenSSL 1.1.1
#2 安装
- OpenSSL
需要依赖于
OpenSSL
,推荐OpenSSL 1.1
及以上版本
安装OpenSSL
brew install openssl
- WorkFlow
git clone https://gitee.com/mirrors/sogou-cpp-workflow.git
cd sogou-cpp-workflow
mkdir build
cd build
cmake ..
make
sudo make install
如果cmake因为OpenSSL失败: 指定OpenSSL路径
# 查看OpenSSL安装路径
brew link openssl --force
For compilers to find openssl@1.1 you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
# 指定OpenSSL路径再cmake
cmake ../ -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1/ -DOPENSSL_LIBRARIES=/usr/local/opt/openssl@1.1/lib
#3 使用
一个简单的Http服务
#3.1 主函数
#include <iostream>
#include <signal.h>
#include <string>
#include <workflow/HttpMessage.h>
#include <workflow/WFServer.h>
#include <workflow/WFHttpServer.h>
#include <workflow/WFFacilities.h>
void process(WFHttpTask *server_task) {
protocol::HttpRequest *request = server_task->get_req();
protocol::HttpResponse *response = server_task->get_resp();
std::string msg = "haha";
response->append_output_body(msg.c_str(), msg.size());
response->set_status_code("200");
}
static WFFacilities::WaitGroup wait_group(1);
void sig_handler(int signo) {
wait_group.done();
}
int main(int argc, char *argv[]) {
signal(SIGINT, sig_handler);
WFHttpServer server(process);
server.start(9090);
wait_group.wait();
server.stop();
return 0;
}
#3.2 CMakeLists.txt
cmake_minimum_required(VERSION 3.17)
project(sogou_demo)
set(CMAKE_CXX_STANDARD 14)
include_directories(/usr/local/include) # Sogou workflow 头文件路径
include_directories(/usr/local/opt/openssl@1.1/include) # openssl头文件路径
set (OPENSSL_CRYPTO_LIBRARY /usr/local/opt/openssl@1.1/lib/libcrypto.dylib) # crypto动态链接库路径
set (OPENSSL_SSL_LIBRARY /usr/local/opt/openssl@1.1/lib/libssl.dylib) # ssl动态链接库路径
LINK_DIRECTORIES(/usr/local/lib/) # openssl静态链接库路径
add_executable(sogou_demo main.cpp) # 主函数
target_link_libraries(sogou_demo workflow ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_SSL_LIBRARY}) # workflow: 链接/usr/local/lib下的workflow静态链接库