xcode使用spdlog(1.7)總結
注意⚠️ 請選擇對c++11支援完善的編譯器, 因為spdlog一直更新。
本文演示環境: mac osx Mojave10.14.6 , Xcode version: 11.0
本文使用的是clang++對程式碼的編譯
1、準備
A、spdlog原始碼(當前為1.7):https://github.com/gabime/spdlog
B、xcode 11.0 or 支援c++11的版本:https://developer.apple.com/download/more/. 更為簡單的方法就是appstore安裝(傻瓜式)或者命令列安裝。Xcode的安裝,這裡跳過。
2、解壓
A、解壓下載的spdlog
B、開啟解壓資料夾,找到 include資料夾 或者 include/spdlog資料夾
3、使用
這裡,我將建立一個command line app演示用法
A、建立c++工程
B、Xcode專案設定標頭檔案尋找路徑, 開啟 上面建立的專案 demo -> Build Settings , 找到 Header Search Paths .
重點來了: 因為我們需要引用的標頭檔案來自spdlog,這裡需要設定Xcode的標頭檔案尋找方式:相對路徑,這樣,好處是: 當我們將專案拷貝到其他電腦,也可正常編譯。
注意, 我拷貝spdlog原始碼資料夾下的include
C、新增配置。
將 Header Search Paths 的值 設定為 : $(SRCROOT)/x_spdlog_demo 。
解釋: 例如,我這裡建立的專案名是: x_sdplog_demo, $(SRCROOT)的值是: x_spdlog_demo.xcodeproj 所在路徑。這樣設定,告訴xcode,去我們指定的目錄下尋找標頭檔案。
D、回到xcode的main.cpp 新增程式碼。
#include "include/spdlog/spdlog.h" #include "include/spdlog/sinks/rotating_file_sink.h" int main(int argc, const char * argv[]) { // 1、console output spdlog::info("Hello, {}!", "World"); // 2、log to file auto rotating_logger_a = spdlog::rotating_logger_mt("log_file_a", "logs/ra.txt", 1024 * 1024 * 5, 3); for (int i = 0; i < 1024; i++) { rotating_logger_a->info("index = {}", i); } spdlog::shutdown(); return 0; }
-->重點來了, 這裡 引用 spdlog庫標頭檔案方式 與 上面 設定 Header Search Paths 有關。
1)、示例程式碼中,#include "include/spdlog/spdlog.h" , Xcode尋找為路徑為: $(SRCROOT)/x_spdlog_demo/include/spdlog/spdlog.h 。 2)、若Header Search Paths 配置為:$(SRCROOT)/x_spdlog_demo/include , 那麼, 程式碼引用需要改為: #include "spdlog/spdlog.h" .
D、構建或者command+B. 發現報錯,報錯提示: 找不到: "XXXXXX /spdlog/common.h"。 開啟檔案: include/spdlog/spdlog.h。 將包含標頭檔案的方式改為:include "XXX.h" 。我這裡演示的, 需要改為: #include "include/spdlog/common.h" .
E、再次構建,發現還是找不到檔案。 和D的步驟一致,找到錯誤提示,改為 include "XXX.h"的方式。 直到 構建成功。
F、構建成功,說明即可正常使用 spdlog 。 執行,並開啟輸出 目錄, 可見程式已經建立日誌檔案並記錄資料。
Xcode使用spdlog結束。
還等什麼,繼續學習 spdlog 原始碼吧。