GNUディレクトリ内のすべてのCファイルを個別のプログラムにコンパイルし、各プログラムに.c拡張子のないソースファイルとして名前を付ける方法はありますか?
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o $@ $<
私はあなたがメイクファイルさえ必要とは思わない-デフォルトの暗黙のメイクルールはそれをするべきである:
$ ls
src0.c src1.c src2.c src3.c
$ make `basename -s .c *`
cc src0.c -o src0
cc src1.c -o src1
cc src2.c -o src2
cc src3.c -o src3
コマンドラインを少し簡単にするために編集されました。
SRCS = $(wildcard *.c)
PROGS = $(patsubst %.c,%,$(SRCS))
all: $(PROGS)
%: %.c
$(CC) $(CFLAGS) -o $@ $<
clean:
rm -f $(PROGS)
「クリーンな」ターゲットを追加することにより、MartinBroadhurstの回答を改善します。 「makeclean」はすべての実行可能ファイルをクリーンアップします。