multiple targets w makefile

0

wiadomo, że reguły makefile wyglądają mniej więcej tak:

targets: dependencies
     commands
     commands
     ...

help od make'a (pinfo make, węzeł: Multiple Targets, make --version = GNU Make 3.81) mówi, że jeżeli jest więcej targetów tzn:

target1 target2: source1 source2 ...
     command1
     command2

to w rzeczywistości jest to równoważne

target1: source1 source2 ...
     command1
     command2

target2: source1 source2 ...
     command1
     command2

czyli komendy command1 i command2 uruchamiane są dwa razy - dla każdego targeta osobno.
Ale gdzieś czytałem, że istnieje taka możliwość zapisu reguły, że komendy wykonają się raz i wtedy wszystkie targety oznaczone są jako zrobione tj.

opts.h opts.cpp: opts.txt
     perl opts_parser.pl opts.txt opts.h opts.cpp

spowoduje, że skrypt perlowy odpali się tylko raz i wyprodukuje zarówno opts.h i opts.cpp. Cały czas myślałem, że tak właśnie działa make jak napotyka wiele targetów ale okazało się, że nie. Pomóżcie, gdzie takie coś może być? :-)

0

Mh, u mnie dziala.

all: main.o main.oo

main.o main.oo: main.c
        @echo "Wykonalem sie!"
        @cp main.c main.o
        @cp main.c main.oo

$ make

Wykonalem sie!

To teraz zakomentujmy jednego cp.
$ make

Wykonalem sie!
Wykonalem sie! # [bo main.oo sie nie "zbudowalo"]

Jestes pewny ze ten skrypt generuje oba pliki za jednym razem?

Dopisek:
$ make --version
GNU Make 3.81

1 użytkowników online, w tym zalogowanych: 0, gości: 1