「欸,這個程式半年前明明可以編譯啊?」
只要是工程師,一定講過這句話,不要騙我。
Conan 中我們常常用套件版本範圍,如 libcurl/[>=8.4 <9],這樣寫的好處是可以自動抓到範圍內最新版,不用每次都一直改 conanfile.py。壞處也是一樣:套件的版本會一直改,專案剛剛啟動的時候是 libcurl/8.3.0,半年後拿到的已經是 libcurl/8.22.0。
上游函式庫改版本,不管是 API 換了或者行為變了,甚至上游函式庫的間接。
所以如果我們需要紀錄當下所有用到的函式庫版本,並且希望在未來能夠 100% 精準重現一樣的建置產出時,就需要 Lock file 版本鎖定檔案。
這就是我們今天的主角:conan.lock
這個檔案會詳細的記錄下這一次 conan install 中所有的套件細節,保證未來可以重現。