我将Makefile的意图用伪代码表示,然后指出我遇到的问题。我正在寻找一个在测试环境中更加用户友好的Makefile。正确使用Makefile的方法如下之一。
make CATEGORY=parser TEST=basic.
make ALL
如果用户按照下面指示的方式“仅仅”提供命令,那么它应该打印一条消息,显示“分类已定义,测试未定义”,反之亦然。
make CATEGORY=parser
make TEST=basic
我尝试用以下方式编写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
我有以下几个问题:
Makefile中的规则是否可以选择性地使用(使用ifdef来选择规则和目标)。
echo命令无法工作。echo应该能够帮助用户正确使用。