2014-02-07 33 views
1

我已經得到了某個環境變量設置,檢查規則:的Makefile規則造成不必要的重建

check-env: 
    ifndef NODE_ENV 
    $(error NODE_ENV is undefined) 
    endif 

我再有依賴於它(如果NODE_ENV沒有設置應該會失敗的東西):

sql/schema.js: sql/schema.sql check-env 
    ... 

我的問題是,check-env總是導致重建,我應該真正做要達到什麼我想在一個合理的模塊化的方式?

回答

1

你爲什麼要在目標的食譜這樣做呢?爲什麼不把它放在makefile的主要部分?

ifndef NODE_ENV 
    $(error NODE_ENV is undefined) 
endif 

如果你真的想通過這樣的規則做,你最好的選擇(你使用GNU的「新的,足以」版本使假設)是使用訂單僅先決條件是這樣的:

check-env: 
     $(if $(NODE_ENV),,$(error NODE_ENV is undefined)) 

sql/schema.js: sql/schema.sql | check-env 
     ... 

(注意管道符號|)。詳情請參閱手冊。

+0

只是因爲在Makefile中沒有永遠排除需要一個變量集。 –