当前位置: 技术问答>linux和unix
linux 中makefile写法
来源: 互联网 发布时间:2016-12-04
本文导语: 如果在我的C文件中用到宏 比如 #if define AAA printf("AAAAn"); elif define BBB printf("BBBB"); else printf("CCCC"); 我如何去写一个makefile去分别编译不同的宏定义,然后分别输出AAA,BBB CCC 当然一次只能输出一个。 求高手解答 ...
如果在我的C文件中用到宏
比如
#if define AAA
printf("AAAAn");
elif define BBB
printf("BBBB");
else
printf("CCCC");
我如何去写一个makefile去分别编译不同的宏定义,然后分别输出AAA,BBB CCC
当然一次只能输出一个。
求高手解答
比如
#if define AAA
printf("AAAAn");
elif define BBB
printf("BBBB");
else
printf("CCCC");
我如何去写一个makefile去分别编译不同的宏定义,然后分别输出AAA,BBB CCC
当然一次只能输出一个。
求高手解答
|
在源代码里面如果这样是定义的:
#ifdef MACRONAME
//可选代码
#endif
那在makefile里面
gcc -D MACRONAME=MACRODEF
或者
gcc -D MACRONAME
这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。
#ifdef MACRONAME
//可选代码
#endif
那在makefile里面
gcc -D MACRONAME=MACRODEF
或者
gcc -D MACRONAME
这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。
|
ifeq ($(DEFS), A)
DEFINES = -DAAA
ifeq ($(DEFS), B)
DEFINES = -DBBB
ifeq ($(DEFS), C)
DEFINES = -DCCC
make的时候: make DEFS=A 或者 make DEFS=B 或者 make DEFS=C
DEFINES = -DAAA
ifeq ($(DEFS), B)
DEFINES = -DBBB
ifeq ($(DEFS), C)
DEFINES = -DCCC
make的时候: make DEFS=A 或者 make DEFS=B 或者 make DEFS=C
|
gcc $DEFINES blablabla
|
如gcc $DEFINES -o test test.c