3

一般的に、私のメイクファイルは機能します。と聞かれるので参考までに:

HEADERS = *.h
OBJS =  *.o
MYFORWARDS = *.c
WARNS = -Wall
CC = gcc
CFLAGS = -mwindows -Wall 
LDFLAGS = -mwindows -lkernel32 -luser32
all : my.exe
my.exe : ${OBJS}
    ${CC} -o "$@" ${OBJS} ${LDFLAGS}
%.o : %.c ${HEADERS}
    ${CC} ${CFLAGS} -c $< -o $@

私はが好きな*.oので、 .cが追加さ*.cれるたびにメイクファイルを編集する必要はありません。

Make は通常、逆方向に動作します。ソースの 1 つが変更された場合は各ターゲットを調べ、変更された場合は再構築します。

それはmakeの要点なので変更したくありませんが、例外があります。

問題は、新しい.cファイルを作成すると、まだ.oファイルが存在しないため ( .oから逆方向に作業する)、新しい.cがあることさえ認識しないことです。

私がこれまでに行ったことは、新しい.cを作成するたびに、新しい.oファイルを手動で作成することです。

より良い方法はありますか?前もって感謝します。

4

1 に答える 1

3

一般的なアプローチは、ワイルドカードに頼るのではなく、オブジェクト ファイルを一覧表示することです。

OBJS = main.o util.o something_else.o

GNU Make では、マニュアルに記載されているように関数を使用して、 に.o基づいてのリストを作成することもでき.cます。

OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
于 2013-08-07T14:09:44.430 に答える