我有一条规则检查是否设置了某个环境变量:
check-env:
ifndef NODE_ENV
$(error NODE_ENV is undefined)
endif
然后我有依赖它的东西(如果没有设置NODE_ENV
则会失败):
sql/schema.js: sql/schema.sql check-env
...
我的问题是check-env
总是导致重建,我应该以合理的模块方式实现我想要的目标?
答案 0 :(得分:1)
你为什么要在目标的配方中这样做?为什么不把它放在makefile的主要部分呢?
ifndef NODE_ENV
$(error NODE_ENV is undefined)
endif
如果您真的希望通过规则完成此操作,那么您最好的选择(假设您使用的是“足够新”的GNU make版本)就是使用这样的仅限订单的先决条件:
check-env:
$(if $(NODE_ENV),,$(error NODE_ENV is undefined))
sql/schema.js: sql/schema.sql | check-env
...
(注意管道符号|
)。有关详细信息,请参阅手册。