2010-05-29 108 views
16

我試用lighttpd爲嵌入式Linux項目。我得到最新的源碼包,並開始編寫一個主要的Makefile封裝所有的配置,編譯,安裝(測試)等東西。Autotools:如何清理lighttpd項目中「./configure」創建的文件?

反之亦然,我想清理每一步。清理完成後,應該沒有生成的文件了。這對重複測試很重要。

我不知道是否有辦法做一個完整的清理什麼./configure生成?我不熟悉autotools的細節。

任何提示?

+0

您是否考慮過使用源代碼管理軟件中的工具來獲取源代碼的清潔狀態? – 2010-05-29 18:24:23

+0

那麼,目前我的(虛擬)測試機器(順便說一下,Ubuntu 10.04)不使用源代碼控制。 – Andi 2010-05-29 20:32:36

回答

23

我個人會真的使用源代碼控制軟件(你應該使用一個)的功能。這將清理獨立於您的構建過程。見例如svn-cleanupgit clean

儘管如此,automake允許調整何時刪除哪些文件。這(有意?)內置了對autotools生成的文件可以以這種方式刪除的限制。看看the definitions for MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, and MAINTAINERCLEANFILES並調整你的Makefile.am的。與他們在一起,你可以刪除很多東西

make mostlyclean 
make clean 
make distclean 
make maintainer-clean 

您將無法刪除例如Makefile.deps/這樣。

至於make clean的可靠性,如果您堅持清楚地指定文件並遠離手動干預,它應該「工作100%」。否則extend the cleanup rules

+0

非常感謝,我會看看文檔的建議部分。如果讓99%的清潔工作和一些知名的文件可以手動刪除,這將是好的。 另一個問題出現了:是否有可能將所有生成的輸出重定向到指定的構建目錄(如CMake)?這將有助於清理,併爲不同的平臺建設,我猜? – Andi 2010-05-30 07:50:53

+0

好吧,它看起來像一個像「讓大多數乾淨乾淨的維護者乾淨」命令將完成這項工作!一個有趣的結果是,在lighttpd包中,2個源文件由構建過程修改:src/configparser.c和src/mod_ssi_exprparser.c。但只有相關人員纔有辦法。也許這些文件是由構建過程重新生成的。謝謝,恭喜! – Andi 2010-05-30 15:54:59

+2

@Andi:使用build目錄與cmake非常相似:'mkdir build && cd build && $ CONF_PATH/.configure && make' – 2010-05-30 18:18:19

3

除了Benjamin Bannier's answer,生成的文件名可以在.gitignore文件中列出,以便它們將被忽略,不使用git跟蹤,不刺激皮膚,並運行git status時打擾。您不能使用git clean刪除這些文件。在這種情況下,我親自使用rm -rf * ; git checkout .命令。

但是,如果您有其他不想刪除的忽略文件,請不要使用它!

+3

你**可以**使用'git clean'去除被忽略的文件:'git clean -X'。 – 2017-01-13 19:20:19

相關問題