簡體   English   中英

如果 Makefile 更改,則自動生成源文件

[英]Automake rebuild source file if Makefile changes

使用 autoconf/automake 構建系統時,如果 Makefile.am(或更高級別,如 configure.ac)中的編譯器標志或其他變量發生更改,則與該 ZB67911656EF5D18C4AE36CB6741 關聯的源文件不會自動重建。 這變得尤為重要,因為我們將 automake 用作僅根據需要重新編譯的持續構建系統的一部分。

我的想法是包含 Makefile 作為 .o 文件的依賴項,理論上可以解決上述問題。 所以有幾個問題:

首先,是否可以添加這樣的規則? 我寧願不必將自定義規則添加到每個 Makefile.am 中,因此可以放入頂級文件(如 configure.ac)的東西會很棒。

其次,這種方法的缺點是在某些情況下,對 Makefile 的更改實際上並沒有影響編譯,所以我最終會在不需要時重新構建。 我想我願意忍受這個(或者至少嘗試一下看看它有多痛苦),以便更好地保證我的構建是正確的,但是有沒有更好的方法來解決這個問題? 我相信 clearmake 通過保存實際的編譯器命令(以及其他依賴項)然后將當前命令與之前的命令進行比較以確定是否需要重新生成文件來解決這個問題。

如果您使用 ccache ( ./configure CXX='ccache g++' ,或者只是將 ccache 的 g++ 添加到路徑中),虛假重建應該非常便宜並且仍然安全。 還要確保永遠不要使用AM_MAINTAINER_MODE autoconf 宏,它使依賴項跟蹤成為可選(以 --enable-maintainer-mode 標志為條件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM