2014-06-18 43 views
0

我想運行之前任何其他目標以下環境檢查的對象checkenvMakefile文件,用戶之前運行環境檢查目標上運行的任何目標

all: build_sub_target1 build_target2 
clean: clean_sub_target1 clean_target2 
... 
... 

checkenv: 
    $(if $(PROJECT_ROOT), , \ 
     $(error $(shell echo -e '\033[41;33mFATAL: Please load project settings first. \ 
     Run "source PROJECT_ROOT_DIR/envsetup.sh"\033[0m')) \ 
    ) 

我希望所有其他目標運行checkenv目標實際上他們做他們的任務之前, , 我怎樣才能做到這一點?除了我將checkenv添加到每個目標的依賴列表之外,還有其他方法嗎?
由於我在這個文件中有很多目標,我認爲將它添加到每個目標中並不酷。應該有任何潛在的規則來做到這一點嗎?
非常感謝您的幫助!

回答

1

你可以使用make conditionals對於這一點,所以,雖然makefile文件被讀來檢查這個條件和目標得到評估前:

ifndef PROJECT_ROOT 
$(error "Please load project settings first. Run source PROJECT_ROOT_DIR/envsetup.sh") 
endif 
+0

是的,這樣做很好的方式。這種任務不需要制定目標。 –

相關問題