我想一次编译所有的c文件。例如aaa.c
,bbb.c
- >每个独立aaa.o
,bbb.o
。
我的作品
CFLAGS=-std=c99
SRCS=$(wildcard *.c)
all:$(SRCS)
gcc -o $@ $^ $(CFLAGS)
但make all
命令不起作用。
我改为使用代码,但仍无法正常工作
CFLAGS=-std=c99
SRCS=$(wildcard *.c)
OBJS:=$(patsubst %.c,%.o,%(SRCS))
all:$(OBJS)
答案 0 :(得分:0)
最简单的方法:将gcc -o ...
更改为gcc -c -o ...
更好的方法:列出要构建的目标文件:
OBJS := $(patsubst %.c,%.o,$(SRCS))
然后你所要做的就是:
all: $(OBJS)
答案 1 :(得分:0)
简单而有效的Makefile:
TARGET ?= a.out
SRC_DIRS ?= ./src
INC_DIRS ?= ./include
SRCS := $(shell find $(SRC_DIRS) -name *.cpp -or -name *.c -or -name *.s)
OBJS := $(addsuffix .o,$(basename $(SRCS)))
DEPS := $(OBJS:.o=.d)
LDLIBS := -L/usr/lib -lstdc++ -lfoo
INC_FLAGS := $(addprefix -I,$(INC_DIRS))
CPPFLAGS ?= $(INC_FLAGS) -MMD -MP
$(TARGET): $(OBJS)
$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)
.PHONY: clean
clean:
$(RM) $(TARGET) $(OBJS) $(DEPS)
-include $(DEPS)