makefile上的patsubst
我必须使用不同的cflag从同一组*.c创建不同的*.o文件。我想使用patsubst从相同的*.c生成不同的*.o文件。我做错了以下语句,请帮助(我想生成一组对象文件,其中($使用patsubst创建要生成的对象的列表,然后对每种类型的生成使用单独的规则) 大概是这样的:makefile上的patsubst,makefile,Makefile,我必须使用不同的cflag从同一组*.c创建不同的*.o文件。我想使用patsubst从相同的*.c生成不同的*.o文件。我做错了以下语句,请帮助(我想生成一组对象文件,其中($使用patsubst创建要生成的对象的列表,然后对每种类型的生成使用单独的规则) 大概是这样的: SRC_FILES = source1.c source2.c OBJ_FILES_O0 = $(patsubst %.c,%_O0.o,$(SRC_FILES)) OBJ_FILES_O2 = $(patsubst
SRC_FILES = source1.c source2.c
OBJ_FILES_O0 = $(patsubst %.c,%_O0.o,$(SRC_FILES))
OBJ_FILES_O2 = $(patsubst %.c,%_O2.o,$(SRC_FILES))
CFLAGS_O0 := -O0
CFLAGS_O2 := -O2
all: $(OBJ_FILES_O0) $(OBJ_FILES_O2)
$(OBJ_FILES_O0): %_O0.o: %.c
$(CC) $(CFLAGS_O0) -c $< -o $@
$(OBJ_FILES_O2): %_O2.o: %.c
$(CC) $(CFLAGS_O2) -c $< -o $@
SRC_FILES=source1.c source2.c
OBJ_FILES_O0=$(patsubst%.c、%_O0.o、$(SRC_FILES))
OBJ_FILES_O2=$(patsubst%.c、%_O2.o、$(SRC_FILES))
CFLAGS_O0:=-O0
CFLAGS_O2:=-O2
全部:$(对象文件0)$(对象文件2)
$(对象文件0):%\uo0.o:%.c
$(CC)$(CFLAGS_O0)-c$<-o$@
$(OBJ_文件_O2):%\u O2.o:%.c
$(CC)$(CFLAGS_O2)-c$<-o$@
您还可以使用通配符指定目录中的所有文件
例如:
#通用生成文件。
CC:=g++
LD:=g++
CFLAGS:=-c
LDFLAGS:=-L-L\
-L-L>libname>\
......................
ifeq(${TARGETARCH},调试)
CFLAGS+=-g-O0
埃利夫
CFLAGS+=-O4-DNDEBUG
SRCFILES:=$(通配符*.cpp)
OBJFILES:=$(patsubst%.cpp、%.o、${SRCFILES})
全部:主要
main:${OBJFILES}
@回声“[链接]”$@
${LD}${LDFLAGS}${OBJFILES}
%.o:%.cpp
@echo“[编译]”$@
${CC}${CFLAGS}$^-o$@
谢谢你的描述,我明白了。
SRC_FILES = source1.c source2.c
OBJ_FILES_O0 = $(patsubst %.c,%_O0.o,$(SRC_FILES))
OBJ_FILES_O2 = $(patsubst %.c,%_O2.o,$(SRC_FILES))
CFLAGS_O0 := -O0
CFLAGS_O2 := -O2
all: $(OBJ_FILES_O0) $(OBJ_FILES_O2)
$(OBJ_FILES_O0): %_O0.o: %.c
$(CC) $(CFLAGS_O0) -c $< -o $@
$(OBJ_FILES_O2): %_O2.o: %.c
$(CC) $(CFLAGS_O2) -c $< -o $@
#Generic Makefile.
CC := g++
LD := g++
CFLAGS := -c
LDFLAGS := -L<path to lib> -l<libname> \
-L<path to lib> -l>libname> \
......................
ifeq (${TARGETARCH}, debug)
CFLAGS += -g -O0
elif
CFLAGS += -O4 -DNDEBUG
SRCFILES := $(wildcard *.cpp)
OBJFILES := $(patsubst %.cpp, %.o, ${SRCFILES})
all: main
main: ${OBJFILES}
@echo "[Linking]"$@
${LD} ${LDFLAGS} ${OBJFILES}
%.o: %.cpp
@echo "[Compiling]"$@
${CC} ${CFLAGS} $^ -o $@