如何在一个Makefile中使用不同的编译器选项构建两个elf?

时间:2013-01-11 02:55:20

标签: gcc makefile

假设我有一个像这样的make文件。我可以通过make获得正常构建,并通过make debug获得调试版本。但是如何编写目标以便我可以在make both这样的命令中获得正常构建和调试构建?

DST := /data/result
debug: CFLAGS += -DDEBUG -g
debug: DST = /some/dir
target: src1.c src2.c
    gcc -bla -bla -o target
    cp target $(DST)
debug: target

我的最终解决方案如下:

DST := /data/result
debug: CFLAGS += -DDEBUG -g
debug: DST = /some/dir
target: src1.c src2.c
    gcc -bla -bla -o target
    cp target $(DST)
debug: target

both:
    make debug && make clean && make all

2 个答案:

答案 0 :(得分:0)

both : target debug

target debug : src1.c src2.c
    gcc $(CFLAGS) -o $@ $^

debug : CFLAGS += -g

答案 1 :(得分:0)

NORMAL := /data/result/target
DEBUG := /some/dir/target

$(NORMAL) $(DEBUG): src1.c src2.c
    gcc -bla -bla $(CFLAGS) $^ -o $@

debug: $(DEBUG)
$(DEBUG): CFLAGS += -DDEBUG -g

both: $(NORMAL) $(DEBUG)