2016-03-07 98 views
2

在一個相當複雜的Makefile中,我偶爾想調用某些規則,只有當目標確實存在時。例如,我可能已經創建了一個本地目錄,並使用losetup將文件掛載到其上。我想在處理它們時離開掛載點和目錄,但在某些操作之前自動關閉它們。GNU Make規則僅在目標存在時執行?

當需要封裝的時候,我想要sync已裝載的文件,umount它,然後對底層文件做些什麼。是否有辦法顛倒規則的意義,以便它只在特定目標時才執行?

回答

3

如何像:

target = $(wildcard somefile) 

$(target): ; @echo build [email protected] 

.PHONY: $(target) 
+0

驚人!我已經有了一些與你的'$(target)'相當的東西來執行原始的掛載和映射,但是使用'$(patsubst)'很容易解決這個問題。 –

+0

對不起,我還沒有足夠的代表upvote你的答案。 –