我正在嘗試制作一個 C 程式并具有以下生成檔案:
CC=clang
CFLAGS=-std=c99 -Wall -pedantic
LDFLAGS=
LDLIBS=
OUT=nes_slop
SRC_DIR=src/
OBJ_DIR=obj/
SRCS=$(wildcard $(SRC_DIR)*.c)
OBJS=$(addprefix $(OBJ_DIR),$(notdir $(SRCS:.c=.o)))
MAKE=make
CLEAR=TRUE
all: clean $(OUT)
clean:
rm -i $(OUT) $(OBJS) -f
$(OUT): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(OUT)
$(OBJS): $(SRCS)
$(CC) -c $(CFLAGS) $(LDLIBS) $< -o $@
在我擁有超過 1 個 .c 檔案之前,一切都很好:
clang -c -std=c99 -Wall -pedantic -lncurses src/gamestate.c -o obj/gamestate.o
clang -c -std=c99 -Wall -pedantic -lncurses src/gamestate.c -o obj/main.o
所以,不知何故源檔案沒有被更新,它總是gamestate.c......我的makefile有什么問題?任何幫助表示贊賞,謝謝
uj5u.com熱心網友回復:
簡而言之,您的規則應如下所示:
$(OBJS): %.o: %.c
$(CC) -c $(CFLAGS) $(LDLIBS) $< -o $@
您可能還想閱讀這篇文章以了解如何生成自動依賴項(因此,如果您更改頭檔案,您的 c 檔案將根據需要自動重新生成)如果您不感興趣,該頁面頂部有一個 TL;DR 部分在細節中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467416.html
