2013-07-18 24 views
2

我有一個自動工具項目。在其中一個目錄中,我想在完成製作過程後運行腳本。換句話說,我想有一個選項可以最後執行的「虛假」目標。或者,我可以使用專用的m4宏(我只知道哪一個...)。 任何想法?如何強制自動工具中的最終目標

感謝

回答

3

我假設通過「自動工具」,你正在使用的Automake和Autoconf的。我可以看到兩種做法。

您可以在Makefile.am中制定-hook規則。但是,這隻能針對某些默認目標完成:install-data,install-exec,uninstall, distdistcheck。因此,要制定一條將在install-exec後立即生效的規則,請將其稱爲install-exec-hook。然後在該規則的配方中運行腳本。

但是,根據您的問題的措辭,您似乎希望在構建後運行腳本。如果是這種情況,則可以使用all-local目標自定義all目標,然後在該目標的配方中運行腳本。請注意,根據Automake文檔,

對於'-local'目標,沒有特別保證 執行順序;通常情況下,它們運行得很早,但是並行make, 沒有辦法確定這一點。

但是,由於all目標是虛假的,所以它不應該運行,直到所有東西都建成。不過,如果你可以在安裝後運行腳本,我會推薦這種方式,因爲執行順序是有保證的。