當使用一個autoconf/automake的構建系統,如果在一Makefile.am編譯器標記或其它變量(或類似configure.ac甚至更高的水平)的變化,與該生成文件相關聯的C++源文件將不會自動重建。這變得特別重要,因爲我們使用automake作爲只根據需要重新編譯的連續構建系統的一部分。Automake的重建的源文件生成文件是否改變
我的想法是,包括Makefile文件作爲其理論上解決上述問題的.o文件的依賴性。所以有幾個問題:
首先,是否可以添加這樣的規則?我寧願不必將該自定義規則添加到每個Makefile.am中,因此可以放置到頂級文件(如configure.ac)中的東西會很好。
其次,對這個缺點的方法是,在某些情況下,改變Makefile文件實際上並未影響編譯所以我會在最後的時候是不是真的需要它重建。我想我願意忍受這個(或者至少試試看看它有多痛苦),以更好地保證我的構建是正確的,但是有沒有更好的方法來解決這個問題?我相信clearmake通過保存實際編譯器命令(以及其他依賴項)來解決此問題,然後將當前命令與先前命令進行比較以確定是否需要重新生成文件。
根據變化的Makefile變量重建的事情是錯誤的,因爲它打破了之類的東西'make install的前綴= /一些/其它/ prefix',這是必要的像GNU平放工具。 –
@JackKelly我可以看到,一般來說,這將是一件壞事,但對於像AM_CPPFLAGS這樣的特定標誌改變它似乎需要重建。例如,如果我將'.../somelib-v2'改爲'.../somelib-v3',則代碼肯定需要重新編譯。我願意放棄命令行設置變量,如果我可以得到實際的Makefile *更改以強制重新編譯。 –