我用伪代码捕获Makefile的意图,然后指出我遇到的问题.我正在寻找一个在测试环境中更加用户友好的Makefile.Makefile的正确用法如下所示.
make CATEGORY=parser TEST=basic.
make ALL
Run Code Online (Sandbox Code Playgroud)
如果用户给出"JUST"命令,如下所示,它应该打印一条消息"CATEGORY defined TEST undefined",反之亦然
make CATEGORY=parser
make TEST=basic
Run Code Online (Sandbox Code Playgroud)
我尝试以下列方式编写Makefile,但它出错了:
help:
echo"Usage: make CATEGORY=<advanced|basic> TEST=<test-case>
echo" make ALL
ifdef CATEGORY
ifdef TEST
CATEGORY_TEST_DEFINED = 1
else
echo "TEST not defined"
else
echo "CATEGORY not defined"
endif
ifeq ($(CATEGORY_TEST_DEFINED), 1)
$(CATEGORY):
cd $(PROJ)/$(CATEGORY)
make -f test.mk $(TEST)
endif
ifdef ALL
$(ALL):
for i in `ls`
cd $$(i)
make all
endif
Run Code Online (Sandbox Code Playgroud)
我的问题是:
Makefile中的规则是否可以选择性(使用ifdef选择规则和目标).
回声不起作用.echo应该帮助用户正确使用.