4

後続の番号が付けられた C プログラムを追加するたびに Makefile を継続的に更新しなければならない課題がたくさんあります。値 1.1、1.2、1.3 などを繰り返すループでこれを行う方法はありますか?

all: 1.1 1.2 1.3 1.4 1.5 1.6 1.7. 1.8 1.9

1.1: 1.1.o
    gcc -o 1.1 $(FLAGS) 1.1.o
1.1.o: 1.1.c
    gcc -c $(FLAGS) 1.1.c

1.2: 1.2.o
    gcc -o 1.2 $(FLAGS) 1.2.o
1.2.o: 1.2.c
    gcc -c $(FLAGS) 1.2.c

1.3: 1.3.o
    gcc -o 1.3 $(FLAGS) 1.3.o
1.3.o: 1.3.c
    gcc -c $(FLAGS) 1.3.c

1.4: 1.4.o
    gcc -o 1.4 $(FLAGS) 1.4.o
1.4.o: 1.4.c
    gcc -c $(FLAGS) 1.4.c

1.5: 1.5.o
    gcc -o 1.5 $(FLAGS) 1.5.o
1.5.o: 1.5.c
    gcc -c $(FLAGS) 1.5.c

1.6: 1.6.o
    gcc -o 1.6 $(FLAGS) 1.6.o
1.6.o: 1.6.c
    gcc -c $(FLAGS) 1.6.c

1.7: 1.7.o
    gcc -o 1.7 $(FLAGS) 1.7.o
1.7.o: 1.7.c
    gcc -c $(FLAGS) 1.7.c

1.8: 1.8.o
    gcc -o 1.8 $(FLAGS) 1.8.o
1.8.o: 1.8.c
    gcc -c $(FLAGS) 1.8.c

1.9: 1.9.o
    gcc -o 1.9 $(FLAGS) 1.9.o
1.9.o: 1.9.c
    gcc -c $(FLAGS) 1.9.c

clean:
    rm -f *.o
    rm -f 1.1 1.2 1.3 1.4 1.5 1.6 1.7. 1.8 1.9
4

3 に答える 3

8

ループではなく、接尾辞 ruleが必要です。

于 2008-11-10T01:46:19.367 に答える
2

次のようなルールを試してください。

OBJECTS = 1.1.o 1.2.o 1.3.o

all: $(OBJECTS)

%.o: %.c
    gcc $(FLAGS) %< -o $*

次に、余分なオブジェクトをリストに追加するだけで、すべてが簡単です。

暗黙のルールは、makefile でのコピー/貼り付けのサイクルを最小限に抑えるのに役立ちます。

http://www.gnu.org/software/autoconf/manual/make/Implicit-Rules.html#Implicit-Rules

于 2008-11-10T01:51:39.717 に答える
0

はい; Makefile でシェル コマンドを使用でき、make 自体が必要なループを提供する場合があります。ウェブ上には良い例がたくさんあります。gccの使用から、 GNU make も使用していると仮定して、ここで試してください。

http://www.gnu.org/software/make/manual/make.html#Foreach-Function

于 2008-11-10T01:44:49.963 に答える