C++ Builder 编译 jsoncpp 库 (0.y.z 分支)

0.y.z 分支的源码使用的是早期的 C++ 标准,可以用老版本编译器,目前最新版本是 0.10.7。
本文采用的编译器为 C++ Builder 10.2.3 版本。

  • 下载 jsoncpp 的 0.y.z 分支的源码
  • 创建编译静态库 jsoncpp.lib / jsoncpp.a 的项目
  • 修改项目选项
  • 编译静态库 jsoncpp.lib / jsoncpp.a
  • 下载 jsoncpp 0.10.7 (包含项目文件和编译好了的库文件)

一. 下载 jsoncpp 的 0.y.z 分支的源码

在 github 上的 jsoncpp 主页上,有 2 个分支:master 和 0.y.z:

  • master 分支:为 C++ 11 源码,如果用 C++ Builder 需要使用 clang 编译器
  • 0.y.z 分支:早期 C++ 标准,支持老版本的编译器
jsoncpp 的 master 和 0.y.z 分支

选择 0.y.z 分支之后,下载的源码压缩包为 jsoncpp-0.y.z.zip
解压缩之后,是 jsoncpp-0.y.z 文件夹。
在 jsoncpp-0.y.z\include\json\version.h 里面可以看到版本。
我下载的是 0.10.7 版本的,就是本文介绍的这个版本。

二. 创建编译静态库 jsoncpp.lib / jsoncpp.a 的项目

打开 C++ Builder,选择菜单 File -> New -> Other...
在打开的创建新项目的对话框里面,左面的目录选择 C++ Builder Projects,右面选择 Static Library,即静态库项目,点击 OK 按钮确认创建新项目,如下图所示:

File -> New -> Other... 选择 Static Library

创建的新项目如下面截图所示:

创建的新静态库项目,需要 Save All 保存到源码的项目文件夹里面

选择菜单 File -> Save All 或者工具条上的 Save All 按钮 (如上面截图所示位置),把项目保存在源码的项目文件夹里面,如下图示,
在 jsoncpp-0.y.z\makefiles 文件夹里面创建 C++ Builder 10.2.3 文件夹,项目要改名为 jsoncpp.cbproj 保存在这里:

项目改名为 jsoncpp.cbproj

存盘之后的项目文件夹 "jsoncpp-0.y.z\makefiles\C++ Builder 10.2.3":

存盘之后的项目文件夹

用鼠标右键点击项目管理里面的 jsoncpp.lib 项目,选择 Add... 添加源码:

用鼠标右键点击项目管理里面的 jsoncpp.lib 项目,选择 Add... 添加源码

选择 jsoncpp-0.y.z\src\lib_json 里面的 3 个源码文件:

选择 jsoncpp-0.y.z\src\lib_json 里面的 3 个源码文件

点击 Open 按钮,把源码文件添加到项目:

项目管理里面可以看到添加进来的源码文件

三. 修改项目选项

添加 Win64 平台:在项目管理里面,鼠标右键点击 Target Platforms,选择 Add Platform...

鼠标右键点击 Target Platforms,选择 Add Platform...

选择 64-bit Windows:

选择 64-bit Windows

点击 OK 按钮,把 64-bit Windows 添加到项目:

64-bit Windows 已经添加

选择菜单 Project -> Options:
左面目录里面选择 C++ (Shared Options),右面的:
Target 选择 All configuration - All platforms
BPI/LIB output 填入 ..\..\lib\cb
Final output directory 填入 ..\..\lib\cb
_TCHAR maps to 选择 wchar_t

项目选项

然后点击 Include path 右面的 "..." 按钮:

添加头文件的路径

中间的编辑框输入 ..\..\include 然后点击 Add 按钮:
这个是相对于项目的路径,即 jsoncpp.cbproj 所在的文件夹 "jsoncpp-0.y.z\makefiles\C++ Builder 10.2.3" 的上一级的上一级的 include 文件夹,相当于 jsoncpp-0.y.z\include 文件夹。

头文件的路径已经添加

可以看到头文件的路径已经添加,点击 OK 按钮确认。
如下面截图所示,可以看到添加的路径,路径之间以分号分割的。

添加路径之后

在项目设置左面目录里面找到 Packages 里面的 Runtime Packages,右面的:
Target 选择 All configurations - All platforms
Link with runtime packages 选项的打勾去掉

如果找不到这个设置选项,说明遇到创建静态库项目的 bug 了,新创建一个 exe 项目,或者打开其他的 exe 项目,关闭之后,再重新创建一个静态库项目,就可能好了。C++ Builder 10.1 之后出现这个 bug,10.0 之前没有这个 bug。

Packages 里面的 Runtime Packages 选项

在项目设置左面目录里面找到 C++ Linker,右面的:
Target 选择 All configurations - All platforms
Link with Dynamic RTL 选项的打勾去掉

如果找不到这个设置选项,一般前面那个 Link with runtime packages 选项也找不到,说明遇到创建静态库项目的 bug 了,新创建一个 exe 项目,或者打开其他的 exe 项目,关闭之后,再重新创建一个静态库项目,就可能好了。C++ Builder 10.1 之后出现这个 bug,10.0 之前没有这个 bug。

项目的 C++ Linker 选项

项目设置完成,别忘了点击项目设置对话框底部的 OK 按钮,修改设置生效。

四. 编译静态库 jsoncpp.lib / jsoncpp.a

1. 编译 Release 版本的 Win32 静态库 jsoncpp.lib

选择 Release 版本的 32-bit Windows 平台:
在项目管理里面,双击如下截图所示的 Release 和 32-bit Windows,加粗字体表示已经选中:

选择 Release 版本,32-bit Windows 平台

选择菜单 Project -> Build jsoncpp 或者快捷键 Shift + F9 开始编译。

等待编译
编译结束

编译结束,如上面截图所示,左下角 Success 表示编译成功,点击中间的对话框 OK 按钮结束。

编译生成的 jsoncpp.lib

可以看到 jsoncpp-0.y.z\lib\cb 文件夹里面编译生成的 jsoncpp.lib

2. 编译 Release 版本的 Win64 静态库 jsoncpp.a

选择 Release 版本的 64-bit Windows 平台:
在项目管理里面,双击如下截图所示的 Release 和 64-bit Windows,加粗字体表示已经选中:

Release 版本,64-bit Windows 平台

选择菜单 Project -> Build jsoncpp 或者快捷键 Shift + F9 开始编译。

等待编译
编译结束

编译结束,如上面截图所示,左下角 Success 表示编译成功,点击中间的对话框 OK 按钮结束。

编译生成的 jsoncpp.lib 和 jsoncpp.a

可以看到 jsoncpp-0.y.z\lib\cb 文件夹里面编译生成的 32 位的 jsoncpp.lib 和 64 位的 jsoncpp.a。

五. 下载 jsoncpp 0.10.7

请点击:jsoncpp-0.10.7-src-cbuilder 下载本文介绍的 jsoncpp 0.10.7 完整源码、C++ Builder 项目文件、编译好了的库文件、例子程序等。


参考:

  • C++ Builder 编译 jsoncpp 库 (0.y.z 分支)
  • C++ Builder 编译 jsoncpp 库 (master 分支)
  • C++ Builder 解析和生成 json (使用 jsoncpp (0.y.z))
  • C++ Builder 解析 json,Json::CharReaderBuilder 的使用方法
  • C++ Builder 生成 json,Json::StreamWriterBuilder 参数详解
  • C++ Builder 遍历 json (使用 jsoncpp)

你可能感兴趣的:(C++ Builder 编译 jsoncpp 库 (0.y.z 分支))