windows下MinGw64环境将JsonCpp编译为动态/静态链接库(不使用cmake)
- 本篇博客将介绍如何在 windows 下,在不使用cmake的情况下,纯使用 MinGw64 的 g++ 编译 JsonCpp 为动态链接库或静态链接库的方法
1. JsonCpp源码下载
-
在github上下载,下载地址为:
GitHub - open-source-parsers/jsoncpp: A C++ library for interacting with JSON. -
我打包的编译jsoncpp动态/静态链接库的文件夹
2.整理编译文件夹
在下载的jsoncpp源码的文件夹中,提取出 源文件 和 头文件
-
1> jsoncpp 源文件路径 :
-
2> jsoncpp 头文件路径 :
jsoncpp的头文件有两个地方存在,一个是上面的源文件中有一个头文件json_tool.h
其他的头文件在:
将整个存放头文件的json目录拷贝下来,并将源文件目录下的json_tool.h放到 json 目录下 -
3> 规整文件
创建一个目录,按下图结构放置 jsoncpp 的头文件和源文件: -
4> 修改文件,非常重要
将 json_tool.h 文件中的 #include <json/json_features.h> 修改为 #include "json_features.h"
如下图所示:
在全部源文件中 include 的 json 目录下的头文件的地方,把 <> 换成 "" ,如下图所示:
注意,这里所有的源文件都要像上图一样做替换
-
5> 创建一个makefile 文件,用于编译动态或静态链接库,makefile 内容如下:
CCC = g++
AR = ar
STATIC_LIB = libjsoncpp.a
SHARE_LIB = libjsoncpp.dll
SOURCE = json_reader.cpp json_value.cpp json_writer.cpp
OBJS = json_reader.o json_value.o json_writer.o
ARFLAGS = -rc
LDFLAGS = -shared -fpic
# #静态库
# $(STATIC_LIB) : $(OBJS)
# $(AR) $(ARFLAGS) -o $(STATIC_LIB) $(OBJS)
#动态库
$(SHARE_LIB) : $(OBJS)
$(CCC) $(LDFLAGS) $(SOURCE) -o $(SHARE_LIB)
.PHONY:clean
clean:
del $(OBJS)
del $(STATIC_LIB)
del $(SHARE_LIB)
3.编译库
- 如果想编译动态链接库,就像上方Makefile内容一样,将编译静态库的部分注释即可
- 如果想编译静态链接库,就将编译动态库的部分注释掉即可
- 选好编译动态或静态链接库之后,直接在终端 make 一下就好
- 编译完成后的库如下图所示: