Windows系统下整合编译cpp-httplib库

木头的喵喵拖孩

系统:Windows 11
代码编辑器:VSCode
编译器:MinGW

因为某些原因,我需要在自己的 C++项目中集成一个 http 协议库,这里选择了cpp-httplib 库 ,因为它只有一个头文件,引入就可以用了,很方便。

开发环境:

系统:Windows 11
代码编辑器:VSCode
编译器:MinGW

源码

目录如下:

  • include
    • httplib.h 关键头文件,实现 http 协议
  • obj 编译后的 object 文件
  • output 链接后的可执行文件
  • src 源文件
    • server.cpp 服务端代码
  • Makefile
  • make.ps1

src/server.cpp

1
2
3
4
5
6
7
8
9
10
#include "../include/httplib.h"

int main(int argc, char *argv[])
{
httplib::Server svr;
svr.Get("/hi", [](const httplib::Request &, httplib::Response &res)
{ res.set_content("Hello World!", "text/plain"); });

svr.listen("0.0.0.0", 1234);
}

Makefile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 匹配指定目录下的所有.cpp文件。将文件名组成列表,赋值给变量src
src = $(wildcard ./src/*.cpp)

# 将文件名中的.cpp后缀替换为.o,得到目标文件名组成列表,赋值给变量obj
obj = $(patsubst ./src/%.cpp, ./obj/%.o, $(src))

compile = g++

# 各种目录
src_path = ./src
inc_path = ./include
obj_path = ./obj
out_path = ./output

# 其他参数
# -lws2_32 是 winsock2 的库,如果你没有使用 winsock2,可以删除
myArgs = -lws2_32

# 编译终极目标
ALL: server.exe

# 模式规则
$(obj): $(obj_path)/%.o: ${src_path}/%.cpp
${compile} -c $< -o $@ -I $(inc_path)

server.exe: $(obj)
${compile} $^ -o $(out_path)/$@ $(myArgs)

# 清理目标文件
clean :
-rm -rf $(obj) $(out_path)/server.exe

# 伪目标
# 当前文件夹下有 ALL 文件或者 clean 文件时,会导致 makefile 瘫痪
# 用伪目标来解决, 添加一行 .PHONY: clean ALL
.PHONY : clean ALL

make.ps1

相当于为 mingw32-make 起了个别名 make

1
mingw32-make
  • 标题: Windows系统下整合编译cpp-httplib库
  • 作者: 木头的喵喵拖孩
  • 创建于: 2024-09-23 16:57:57
  • 更新于: 2024-09-23 17:17:44
  • 链接: https://blog.xx-xx.top/2024/09/23/Windows系统下整合编译cpp-httplib库/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
Windows系统下整合编译cpp-httplib库