0
我正在使用ccache
和git-worktree
。許多相同的文件在多個目錄中共享。問題是ccache
不檢查文件是否相同,並且再次編譯。是否有一個ccache
選項可以讓它檢查跨多個源目錄的緩存?對不同目錄中的同一文件有ccache鏈接
我正在使用ccache
和git-worktree
。許多相同的文件在多個目錄中共享。問題是ccache
不檢查文件是否相同,並且再次編譯。是否有一個ccache
選項可以讓它檢查跨多個源目錄的緩存?對不同目錄中的同一文件有ccache鏈接
如果使用-g
,ccache(默認自版本3.3以來)將當前工作目錄添加到哈希,這隻能使得在同一源目錄中獲得高速緩存命中成爲可能。另一個類似的問題是,如果在編譯器參數中使用絕對路徑,則需要使用base_dir
配置設置。
從"Compiling in different directories" section in the ccache manual更多細節:
如果用-g(或類似)建立調試信息添加到目標文件,你必須:
-fdebug-prefix-map=old=new
選項將調試信息重定位到一個通用前綴(例如-fdebug-prefix-map=$PWD=.
);或者hash_dir = false
。如果在命令行上的任何位置使用絕對路徑(例如,源代碼文件路徑或編譯器等-I
和-MF
選項的參數),則必須設置base_dir
爲絕對路徑到「基目錄」。然後,ccache將在計算散列之前將該目錄下的絕對路徑重寫爲相對路徑。