相关疑难解决方法(0)

在makefile中使用条件规则

我用伪代码捕获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)

我的问题是:

  1. Makefile中的规则是否可以选择性(使用ifdef选择规则和目标).

  2. 回声不起作用.echo应该帮助用户正确使用.

makefile conditional-compilation

13
推荐指数
2
解决办法
6万
查看次数

标签 统计

conditional-compilation ×1

makefile ×1