i ein Make-Datei so etwas wie dieses hava:Make-Datei automatische Variable für entsprechende C-Datei
outdir = release
allsrc = aaa/a.c bbb/b.c ccc/c.c
allobjs = $(addprefix $(outdir), $(notdir $(allsrc:.c=.o))
...
test: $(allobjs)
$(allobjs): $(allsrc)
gcc -c -o [email protected] $<
make test führt:
gcc -c -o release/a.o aaa/a.c
gcc -c -o release/b.o aaa/a.c
gcc -c -o release/c.o aaa/a.c
(automatischer Variable $ < immer nimmt erste Voraussetzung) aber ich will "Entsprechendes":
gcc -c -o release/a.o aaa/a.c
gcc -c -o release/b.o bbb/b.c
gcc -c -o release/c.o ccc/c.c
was soll ich ändern? ein wünschenswertes Ergebnis erzielen?
ich weiß, dass dies sicher funktioniert:
$(outdir)/a.o: aaa/a.c
gcc -c -o [email protected] $<
$(outdir)/b.o: bbb/b.c
gcc -c -o [email protected] $<
$(outdir)/c.o: ccc/c.c
gcc -c -o [email protected] $<
und sich fragen, wie man das gleiche in einer receipe zu erreichen. (weil ich in meinem echten Makefile ~ 20 verschiedene Quelldateien habe, nicht nur 3, wie ich hier zum Beispiel gemacht habe)
nicht brauchen Wenn Sie die Aufmerksamkeit auf die gute Beratung nicht in Etan Antwort zahlen , können Sie mit '$ *. c' experimentieren. –