0

個々の実行可能ファイルにコンパイルしたい複数のソース ファイル (file1.c、file2.c などと呼びましょう) があります。メイクファイルの関連部分:

file%.x: file%.o
    $(CC) $(CFLAGS) $< -o $@
file%.o: file%.c
    $(CC) $(CFLAGS) -c $< -o $@

make file1.x、 などを使用して、それらを個別に細かくすることができmake file2.xます。すべてのファイルをビルドするメイクファイルにターゲットが必要です。いくつか試してみましたが、うまくいきませんでした:

all: file*.x

all: file%.x

これを行う簡単な方法はありますか?前もって感謝します。

4

3 に答える 3

1
SOURCES := $(wildcard file*.c)
FILES := $(SOURCES:.c=.x)

all: $(FILES)
于 2013-03-29T15:29:19.590 に答える
0

私は実際に自分の質問に答えました(この質問への回答の助けを借りて)。「正しい」とマークされた答えも機能します。

all: $(addsuffix .x, $(basename $(wildcard file*.c))

助けてくれてありがとう。

于 2013-03-29T15:40:07.840 に答える
0

ここで奇妙なのは、多数の OBJECT ファイルを作成しているだけだということです。通常、オブジェクト ファイルは、相互にリンクして実行可能ファイルを形成するために使用されるため、デフォルト ルールでは、その実行可能ファイルをビルドし、その依存関係をビルドします。

あなたが本当に自分のやり方でやりたいだけなら、私は次のようにします:

FILES=test1 test2 test3

all: $(FILES:%=%.o)

$(FILES:%.o): %.c
  $(CC) -o $@ $^
于 2013-03-29T15:30:35.043 に答える