Make传递参数
一个简单的例子,关于选择不选择DEBUG分支的问题,可以通过Makefile中设置
#include
int afun()
{
printf("#########\n");
return 6;
}
int bfun()
{
printf("!!!!!!!\n");
return 8;
}
int main(void)
{
int(*fun)(void);
int a;
#ifdef DEBUG /*这里的DEBUG对应于Makefile中的DDEBUG参数*/
fun = afun;
#else
fun = bfun;
#endif
a = fun();
printf("a=%d\n",a);
return 0;
}
Makefile的内容如下
CFLAGS=-g -Wall -DDEBUG #这里的DDEBUG对应于mkfile.c中的DEBUG,此时在命令行直接make即可选择DEBUG分支
#或者这里将CFLAGS如下设置:
# CFLAGS = ${CFLAG}
# CFLAGS += -g -Wall
# 然后在make的时候这么写: make CFLAG=-DDEBUG
# 执行的结果是 gcc -DDEBUG -g -Wall mkfile.c -o mkfile
OBJ=mkfile hello
.PHONY:all
all:${OBJ}
mkfile:
gcc ${CFLAGS} mkfile.c -o mkfile
hello:
gcc ../hello/hello.c -o hello
.PHONY:clean
clean:
-rm mkfile hello \#*\# #rm前加 - 表示遇到错误继续进行而不退出。
阅读(4091) | 评论(0) | 转发(0) |