gpt4 book ai didi

makefile - 在Makefile中使用条件规则

转载 作者:行者123 更新时间:2023-12-03 23:25:00 25 4
gpt4 key购买 nike

我用伪代码捕获了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应该可以帮助用户正确使用。

最佳答案

问题是echo属于外壳程序; Make可以在命令中将其传递给Shell,但是Make无法执行它。使用info代替:

ifdef CATEGORY
$(info CATEGORY defined)
else
$(info CATEGORY undefined)
endif


如果您希望规则是有条件的:

ifdef CATEGORY
ifdef TEST
$(CATEGORY):
whatever
else
$(info TEST not defined)
else
$(info CATEGORY not defined)
endif

关于makefile - 在Makefile中使用条件规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com