Mithilfe von bedingten Regeln in einem makefile

Ich erfassen die Absicht des Makefile in pseudo-code, dann geben die Fragen, die ich habe. Ich bin auf der Suche nach ein Makefile, das ist benutzerfreundlicher in einer test-Umgebung. Die korrekte Verwendung des Makefiles wird einer der unten.

    make CATEGORY=parser TEST=basic.
    make ALL

Wenn ein Benutzer gibt "NUR" die Befehle, wie unten angegeben, sollte es zu drucken die Meldung "KATEGORIE definierten TEST-undefiniert", und vice-versa

    make CATEGORY=parser
    make TEST=basic

Ich habe versucht zu schreiben das Makefile in der folgenden Weise, aber Fehler aus:

    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

Fragen, die ich habe sind:

  1. Ob die Regeln in einem Makefile können wählerisch sein (mit ifdef wählen Sie die Regeln und Ziele).

  2. echo funktioniert nicht. echo sollte helfen, den Benutzer mit der richtigen Verwendung.

InformationsquelleAutor Mike | 2012-01-10
Schreibe einen Kommentar