linux 中makefile写法

nuoshueihe 2011-06-08 01:50:54
如果在我的C文件中用到宏
比如
#if define AAA
printf("AAAA\n");
elif define BBB
printf("BBBB");
else
printf("CCCC");


我如何去写一个makefile去分别编译不同的宏定义,然后分别输出AAA,BBB CCC
当然一次只能输出一个。
求高手解答
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaokai3000 2011-06-08
  • 打赏
  • 举报
回复
如gcc $DEFINES -o test test.c
zhaokai3000 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 nuoshueihe 的回复:]
引用 4 楼 arnold9009 的回复:
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


DEFINE……
[/Quote]

gcc $DEFINES blablabla

nuoshueihe 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 arnold9009 的回复:]
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
[/Quote]

DEFINES 在make中如何使用到的呢?
如果我的源文件是test.c
则gcc要怎么写才能包含DEFINES 呢
Arnold9009 2011-06-08
  • 打赏
  • 举报
回复
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
haixuelang 2011-06-08
  • 打赏
  • 举报
回复
写两个Makefile不就完事了吗
nuoshueihe 2011-06-08
  • 打赏
  • 举报
回复
那请问可不可以通过参数去传递呢?
比如在编译makefile时候,make aaa=1
自动编译某段代码
make aaa=2
自动编译另外一段代码
yfk 2011-06-08
  • 打赏
  • 举报
回复
在源代码里面如果这样是定义的:
#ifdef MACRONAME
//可选代码
#endif

那在makefile里面
gcc -D MACRONAME=MACRODEF
或者
gcc -D MACRONAME

这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧