Ich habe ein Makefile, das viele Ziele hat und das Rezept für jedes Ziel ist ziemlich ähnlich.Wie vermeidet man Doppelarbeit in Makefile-Zielen mit ähnlichen Rezepten?
foo:
gcc foo.c -o foo
mv foo ~/bin
bar:
gcc bar.c -o bar
mv bar ~/bin
baz:
gcc baz.c -o baz
mv baz ~/bin
Ich möchte all diese Duplizierung vermeiden. Ich möchte etwas wie unten haben (das ist keine gültige Syntax; dies drückt nur meine Absicht aus).
TARGET_NAME:
gcc $(TARGET_NAME).c -o $(TARGET_NAME)
mv $(TARGET_NAME) ~/bin
Ist es möglich, so etwas zu tun? Wenn nicht, was ist das beste Makefile, das ich schreiben kann, um Doppelungen in Rezepten zu minimieren?
Wie bereits an anderer Stelle von @beta erwähnt, ist Ihr 'Makefile' defekt, weil Sie die Dateien, die Sie erstellen, verschieben, so dass sie jedes Mal neu erstellt werden, unabhängig davon, ob es notwendig ist. Außerdem kann die Option "-o" für "gcc" ein Unterverzeichnis übernehmen. 'bin /%:% .c; gcc $ <-o $ @ ' – tripleee