我必须使用各种CFLAGS从同一组*.c创建不同的*.o文件.我想使用patsubst从相同的*.c生成不同的*.o文件.我做错了以下语句,请帮忙(我想生成一组具有($ <)_ O0.o的对象文件和另一组($ <)_ O2.o来自同一组c源文件):
$(CC) $(CFLAGS_02) -c $< -o $(patsubst %.c,%_O2.o,$<)
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 19
使用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 $@
Run Code Online (Sandbox Code Playgroud)
小智 5
您还可以使用通配符指定目录中的所有文件.
例如:
#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 $@
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35898 次 |
| 最近记录: |