我知道自上次調用make後,GNU Make列出修改後的源文件?
根據哪些源文件已更改自動計算出需要更新的文件。它還會自動確定更新文件的正確順序,以防一個非源文件依賴於另一個非源文件。
因此,如果您更改了幾個源文件,然後運行Make,則無需重新編譯您的所有程序。它僅更新那些直接或間接依賴於您更改的源文件的非源文件。
現在我想知道我是否可以問Make來列出這些修改後的源代碼?
我知道自上次調用make後,GNU Make列出修改後的源文件?
根據哪些源文件已更改自動計算出需要更新的文件。它還會自動確定更新文件的正確順序,以防一個非源文件依賴於另一個非源文件。
因此,如果您更改了幾個源文件,然後運行Make,則無需重新編譯您的所有程序。它僅更新那些直接或間接依賴於您更改的源文件的非源文件。
現在我想知道我是否可以問Make來列出這些修改後的源代碼?
你需要它使用所有的源代碼作爲其先決條件虛擬文件:
mod_list: foo.c bar.cc baz.cpp
@echo modified sources: $?
@touch [email protected]
你可以把源列表作爲一個獨立的變量:
WATCHED_SOURCES = foo.c bar.cc baz.cpp
mod_list: $(WATCHED_SOURCES)
@echo modified sources: $?
@touch [email protected]
或者使用通配符看看目前的所有源代碼:
WATCHED_SOURCES = $(wildcard *.c *.cc *.cpp *.whatever)
mod_list: $(WATCHED_SOURCES)
@echo modified sources: $?
@touch [email protected]
非常感謝@beta。這對我有效。 – Roy 2012-07-17 13:03:16
一個簡單的方法是使用幹運行選項進行製作,它可以是-n
或--dry-run
或其他幾個選項,具體取決於您正在使用的實現方式。這告訴你如果執行哪一個將會做什麼,其中,特別是,告訴你它將重新編譯什麼源文件。
這一切都在man
頁面。
你想讓列出修改後的源代碼,用它來構建它正在構建的任何東西?還是你想要一個新的目標,列出自上次運行Make後已修改的所有源文件? – Beta 2012-07-16 12:11:51
新的目標將更加可取 – Roy 2012-07-16 14:10:03