我创建了一个(非常简单的)makefile:
DEBUG = -DDEBUG
main: main.c add.c
gcc $(DEBUG) main.c add.c -o main -lm
我想要的(并且不了解该怎么做)是创建makefile,以便在用户打印make debug
时,代码将使用debug选项进行编译,但仅在打印时{ {1}},调试将被忽略。做这个的最好方式是什么?
答案 0 :(得分:3)
您可能正在寻找类似
的内容main: main.c add.c
gcc $(DEBUG) main.c add.c -o main -lm
debug: DEBUG = -DDEBUG
debug: main
答案 1 :(得分:0)
我想出了这种解决方案,取决于bash variable substitution。
Makefile:
main: main.c add.c
${CC} `echo $${DEBUG+-DDEBUG}` main.c add.c -o main -lm
当环境变量DEBUG定义为任何值(甚至为空白)时,此makefile将替换对编译器有用的-DDEBUG
。因此,调用看起来像:
DEBUG=1 make main
答案 2 :(得分:-1)
我知道这已经很老了,我只想在downhillFromHere的答案中添加这个小的修改,以简化make的用法:
main: main.c add.c
gcc $(DEBUG) main.c add.c -o main -lm
debug: DEBUG = -DDEBUG
debug: clean main
每次<{1}}之前,干净都会在主要目标之前运行。