【发布时间】:2012-02-07 08:26:30
【问题描述】:
我用伪代码捕捉 Makefile 的意图,然后指出我遇到的问题。我正在寻找一个在测试环境中对用户更友好的 Makefile。 Makefile 的正确用法是以下之一。
make CATEGORY=parser TEST=basic.
make ALL
如果用户给出“JUST”如下所示的命令,它应该打印一条消息“CATEGORY defined TEST undefined”,反之亦然
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 应该可以帮助用户正确使用。
【问题讨论】:
-
跟进@Beta 的观点,您应该查看FAQ,尤其是How do I ask questions here? 部分。
标签: makefile conditional-compilation