(來自https://groups.google.com/d/msg/bazel-discuss/HEpui0DLvnA/RzuwICDmBgAJ)聲明包括源C++編譯動作無效
原諒我,如果這已被提出,並通過該組/開發者的回答。
「Declared include source」文件的列表是C++編譯操作鍵的一個組件。
這意味着向cc_ *目標的srcs或hdrs添加擴展頭文件會導致所有可以看到聲明的列表內容(在hdrs情況下,可傳遞)的編譯操作失效。
任何人都可以解釋這可能是必要的,當包括修剪應該提供一個最小的可能的無效源編譯集?
「聲譽阻止我評論你的答案,轉發意味着我不擁有這個問題」 - 對不起,我沒有預料到這個問題。 –
「重新驗證」我的意思是說Bazel重新執行動作,但如果它的輸出與上次運行時相同,Bazel認爲下游動作(取決於此文件)是最新的。我認爲添加一個頭文件會影響編譯,例如如果具有相同名稱的文件已包含在其他包含路徑中,例如:你將自己的「stdio.h」添加到'srcs'。 –
我認識到bazel的動作緩存和體系結構的難度,但是這會產生一個笨重的'可能導致修改'目標的橫截面。儘管stdio.h示例是有效的(儘管本地/系統引用/尖括號包含路徑很複雜),基本名稱的實際限制,更不用說解析路徑,完全被忽略,從而增加了我的'new_header.h'沒有出現在*任何*現有的可用的聲明包含清單可笑的昂貴。 –