如何将目标标记为“不可取用”或“不直接调用此目标”?
例如,
common:
touch $(VAR) # VAR is expected to be set
foo: VAR = this
foo: common
bar: VAR = that
bar: common
我不希望用户执行以下操作:
make common
将common
标记为不可销售是否有成语?
答案 0 :(得分:1)
您可以为“私人目标”使用特定的模式并检查该模式
以“ _”开头的目标似乎也未列出在自动完成功能中
ifeq ($(findstring _,$(MAKECMDGOALS)),_)
$(error target $(MAKECMDGOALS) is private)
endif
.PHONY: public-target
public-target: _private-target
public-target:
echo "public target"
.PHONY: _private-target
_private-target:
echo "private target"
答案 1 :(得分:0)
以下内容可行
ifeq ($(MAKECMDGOALS),common)
$(error do not call common directly)
endif
但是,对于像
这样的目标来说,编写ifeq ($(MAKECMDGOALS), ...)
很困难
%-$(VERSION).tar:
# create the final .tar file
答案 2 :(得分:0)
没有类似于.PHONY
的东西可以通过命令行保持目标。你可以这样做:
common:
$(if $(VAR),,$(error You must run 'make foo' or 'make bar'))
touch $(VAR)