1 Windows中使用CMake编译libhv

1.1 使用命令行

libhv的github中给出了在Windows上使用CMake命令行创建libhv Visual Studio项目的命令,如下

mkdir win64
cd win64
cmake .. -G "Visual Studio 15 2017 Win64"
#cmake .. -G "Visual Studio 16 2019" -A x64
#cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build .

1.2 使用CMake GUI

如果使用的CMake GUI,则在libhv的仓库目录下新建build文件夹,在CMake GUI中选择build文件夹为新建的文件夹,src为libhv的根目录,设置如下

libhv –  Windows编译libhv以及在Visual Studio中配置开发环境-StubbornHuang Blog

然后点击Configure和Generate,即可在build文件夹下生成libhv的项目文件。

1.3 编译结果

libhv项目构建完成之后,项目文件为buildhv.sln,使用Visual Studio打开项目,选择ALL_BUILD构建所有项目,项目构建成功之后,

  • include文件夹为build/include
  • lib和dll文件夹,为build/lib,动态导入库为hv.lib,动态库为hv.dll,静态库为hv_static.lib

2 Visual Studio中配置libhv开发环境

2.1 使用动态导入库lib+动态库dll

配置Visual Studio项目属性,进行以下修改

  1. 工程 -> 属性 -> C++ -> 常规 -> 附加包含目录,输入1.3节中include目录路径,使用相对路径
  2. 工程 -> 属性 -> 链接器 -> 常规 -> 附加库目录,输入1.3节中的lib目录路径,使用相对路径
  3. 工程 -> 属性 -> 链接器 -> 输入 -> 附加依赖库,输入hv.lib

2.2 使用静态库lib

使用静态库lib需要定义HV_STATICLIB预编译宏,用于屏蔽hexport.h头文件中动态库导入宏。

配置Visual Studio项目属性,进行以下修改

  1. 工程 -> 属性 -> C++ -> 常规 -> 附加包含目录,输入1.3节中include目录路径,使用相对路径
  2. 工程 -> 属性 -> 链接器 -> 常规 -> 附加库目录,输入1.3节中的lib目录路径,使用相对路径
  3. 工程 -> 属性 -> 链接器 -> 输入 -> 附加依赖库,输入hv_static.lib
  4. 工程 -> 属性 -> C++ -> 预处理器 -> 预处理器定义,输入HV_STATICLIB

3 代码测试

配置好项目环境后,在main.cpp中输入以下代码

#include <iostream>
#include "hv/hv.h"
#include "hv/HttpServer.h"
int main() {
    HttpService service;
    service.base_url = "/v1/api";
    service.POST("/echo", [](HttpRequest* req, HttpResponse* res) {
        res->body = req->body;
        return 200;
        });
    http_server_t server;
    server.port = 8080;
    server.service = &service;
    http_server_run(&server);
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

如果能编译和运行成功,则说明libhv环境配置成功。