最近公司開始有新想法,加上 ESP32 要讀寫資料,
開始在研究怎麼在純 C 裡面讀寫 config.ini。
因為經手的專案都搭配 Makefile 編譯,
所以本篇也會一併紀錄 Makefile 設定眉角。
我的環境是 Ubuntu 22.04,
apt 裡面沒辦法直接裝 libconfig,
於是首先先下載 libconfig 的壓縮包:
從別人那邊轉貼的安裝流程:
# 解壓縮
tar -zxvf libconfig-你下載的版本編號.tar.gz
# 進入工作資料夾
cd libconfig-你下載的版本編號
./configure
# 編譯
make -j8
# 檢查編譯有沒有壞掉
make check
# 開始安裝
sudo make install
# 複製檔案到你想要的地方,這邊一定要 sudo 不然 .so 會進不去
# 原版教學
sudo cp -d ./lib/libconfig* /usr/lib
# 想用 Makefile 包進專案
sudo cp -d ./lib/libconfig* /usr/include
# 檢查安裝路徑是否正確
sudo ldconfig -v
在你的 Makefile 做兩件事情
1. 確定 CFLAG 裡面包含 /usr/include(通常會包)
2. -LDFLAG 後面加上 -lconfig
接下來就能讀寫 config.ini
接下來就能
config_t cfg;
config_setting_t *setting;
config_init(&cfg);
//讀取整份文件
config_read_file(&cfg, "config.cfg");
//讀取特定的 value
const char *value;
config_lookup_string(&cfg, "section1.key1", &value);
//寫入特定的 value 至暫存
setting = config_lookup(&cfg, "section1.key2");
config_setting_set_string(setting, "new_value");
//將暫存寫入文件
config_write_file(&cfg, "config.cfg");
要特別注意的是這個套件支援的 ini格式有點不一樣
這格式長這樣:
section:
{
key1 = value1
key2 = value2
key3 = value3
}
完美 謝謝指教