0.y.z 分支的源碼使用的是早期的 C++ 標準,可以用老版本編譯器咐低,目前最新版本是 0.10.7萝招。
本文采用的編譯器為 C++ Builder 10.2.3 版本衔瓮。
- 下載 jsoncpp 的 0.y.z 分支的源碼
- 創(chuàng)建編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a 的項目
- 修改項目選項
- 編譯靜態(tài)庫 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++ 標準阶冈,支持老版本的編譯器
選擇 0.y.z 分支之后,下載的源碼壓縮包為 jsoncpp-0.y.z.zip
解壓縮之后塑径,是 jsoncpp-0.y.z 文件夾女坑。
在 jsoncpp-0.y.z\include\json\version.h 里面可以看到版本。
我下載的是 0.10.7 版本的统舀,就是本文介紹的這個版本匆骗。
二. 創(chuàng)建編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a 的項目
打開 C++ Builder,選擇菜單 File -> New -> Other...
在打開的創(chuàng)建新項目的對話框里面誉简,左面的目錄選擇 C++ Builder Projects碉就,右面選擇 Static Library,即靜態(tài)庫項目闷串,點擊 OK 按鈕確認創(chuàng)建新項目瓮钥,如下圖所示:
創(chuàng)建的新項目如下面截圖所示:
選擇菜單 File -> Save All 或者工具條上的 Save All 按鈕 (如上面截圖所示位置),把項目保存在源碼的項目文件夾里面碉熄,如下圖示桨武,
在 jsoncpp-0.y.z\makefiles 文件夾里面創(chuàng)建 C++ Builder 10.2.3 文件夾,項目要改名為 jsoncpp.cbproj 保存在這里:
存盤之后的項目文件夾 "jsoncpp-0.y.z\makefiles\C++ Builder 10.2.3":
用鼠標右鍵點擊項目管理里面的 jsoncpp.lib 項目锈津,選擇 Add... 添加源碼:
選擇 jsoncpp-0.y.z\src\lib_json 里面的 3 個源碼文件:
點擊 Open 按鈕,把源碼文件添加到項目:
三. 修改項目選項
添加 Win64 平臺:在項目管理里面琼梆,鼠標右鍵點擊 Target Platforms性誉,選擇 Add Platform...
選擇 64-bit Windows:
點擊 OK 按鈕叮叹,把 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 文件夾。
可以看到頭文件的路徑已經(jīng)添加先较,點擊 OK 按鈕確認携冤。
如下面截圖所示,可以看到添加的路徑闲勺,路徑之間以分號分割的曾棕。
在項目設(shè)置左面目錄里面找到 Packages 里面的 Runtime Packages,右面的:
Target 選擇 All configurations - All platforms
菜循;
Link with runtime packages 選項的打勾去掉
翘地。
如果找不到這個設(shè)置選項,說明遇到創(chuàng)建靜態(tài)庫項目的 bug 了癌幕,新創(chuàng)建一個 exe 項目衙耕,或者打開其他的 exe 項目,關(guān)閉之后勺远,再重新創(chuàng)建一個靜態(tài)庫項目橙喘,就可能好了。C++ Builder 10.1 之后出現(xiàn)這個 bug胶逢,10.0 之前沒有這個 bug厅瞎。
在項目設(shè)置左面目錄里面找到 C++ Linker,右面的:
Target 選擇 All configurations - All platforms
初坠;
Link with Dynamic RTL 選項的打勾去掉
和簸。
如果找不到這個設(shè)置選項,一般前面那個 Link with runtime packages 選項也找不到碟刺,說明遇到創(chuàng)建靜態(tài)庫項目的 bug 了锁保,新創(chuàng)建一個 exe 項目,或者打開其他的 exe 項目,關(guān)閉之后身诺,再重新創(chuàng)建一個靜態(tài)庫項目蜜托,就可能好了。C++ Builder 10.1 之后出現(xiàn)這個 bug霉赡,10.0 之前沒有這個 bug橄务。
項目設(shè)置完成,別忘了點擊項目設(shè)置對話框底部的 OK 按鈕穴亏,修改設(shè)置生效蜂挪。
四. 編譯靜態(tài)庫 jsoncpp.lib / jsoncpp.a
1. 編譯 Release 版本的 Win32 靜態(tài)庫 jsoncpp.lib
選擇 Release 版本的 32-bit Windows 平臺:
在項目管理里面,雙擊如下截圖所示的 Release 和 32-bit Windows嗓化,加粗字體表示已經(jīng)選中:
選擇菜單 Project -> Build jsoncpp 或者快捷鍵 Shift + F9 開始編譯。
編譯結(jié)束刺覆,如上面截圖所示严肪,左下角 Success 表示編譯成功,點擊中間的對話框 OK 按鈕結(jié)束谦屑。
可以看到 jsoncpp-0.y.z\lib\cb 文件夾里面編譯生成的 jsoncpp.lib
2. 編譯 Release 版本的 Win64 靜態(tài)庫 jsoncpp.a
選擇 Release 版本的 64-bit Windows 平臺:
在項目管理里面驳糯,雙擊如下截圖所示的 Release 和 64-bit Windows,加粗字體表示已經(jīng)選中:
選擇菜單 Project -> Build jsoncpp 或者快捷鍵 Shift + F9 開始編譯酝枢。
編譯結(jié)束,如上面截圖所示悍手,左下角 Success 表示編譯成功帘睦,點擊中間的對話框 OK 按鈕結(jié)束。
可以看到 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 項目文件、編譯好了的庫文件涝焙、例子程序等卑笨。
參考: