Используя условные правила в make-файле

Я фиксирую намерение Makefile в псевдокоде, а затем указываю на проблемы, которые у меня есть. Я ищу Makefile, более удобный в тестовой среде. Правильное использование Makefile - одно из следующих.

    make CATEGORY=parser TEST=basic.
    make ALL

Если пользователь дает "ПРОСТО" команды, как указано ниже, он должен распечатать сообщение "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

У меня есть следующие вопросы:

  1. Могут ли правила в Makefile быть выборочными (с использованием ifdef для выбора правил и целей).

  2. эхо не работает. echo должно помочь пользователю в правильном использовании.

13
задан Dave 30 September 2013 в 11:47
поделиться