接下來來解釋一個很重要的概念:Package ID
我們都知道C++套件管理是個很麻煩的東西,特別是下載預先編譯好的二進位檔的時候,同一個 fmt 12.2.0,Windows 編譯出來是一份、macOS 是另一份,Debug 跟 Release 又各要一份。Conan 要怎麼知道該拿哪一份二進位檔?
Conan 就是透過 Package ID 這個東西來達成。
今天的目標:
如果你之前跑過這個系列的範例,那我希望你回頭到 D03 的範例程式,再跑一次 conan install
conan install . --build=missing
輸出的後半段有這一行:
fmt/12.2.0#b445244e6d0151a425e229248cd2bed8:8db65e2827b8126426a61b6cb7bf0c8a67f5915d#7c7bb68c3f6404d3a32a9e4682a011d9 - Cache
你看到的 hash 可能跟我的不一樣,這是我在 Mac(Apple Clang 21)上的結果。把它拆開來:
fmt/12.2.0 # b445244e... : 8db65e28... # 7c7bb68c...
└名稱/版本┘ └─ recipe ─┘ └package ID┘ └ package ─┘
revision revision