LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 620|回复: 2

请教关于Makefile的一个问题

[复制链接]
发表于 2004-4-19 10:52:30 | 显示全部楼层 |阅读模式
有一个8051单片机的Makefile文件内容如下(.rel文件跟一般的.o文件有差不多的含义):
==========================================================
SDCCCFLAGS = --model-small

%.rel : %.c %.h
        sdcc $(SDCCCFLAGS) -c $<

main.hex: main.c oper_ic.rel oper_led.rel
        sdcc $(SDCCCFLAGS) $^
        packihx main.ihx > IC_Sorting.hex
==========================================================我如果还有增加一个编译选项,用户输入"make debug"时,SDCCFLAGS将变成--debug,为用户提供调试信息.这种情况有人遇到过没有?我不知道怎样解决.
 楼主| 发表于 2004-4-19 11:21:35 | 显示全部楼层

回复: 请教关于Makefile的一个问题

找到了一个解决方法:
==========================================================
SDCCCFLAGS = --model-small
DEBUGFLAGS = --debug

%.rel : %.c %.h
ifeq ($(RULES),debug)
        sdcc $(DEBUGFLAGS) -c $<
else
        sdcc $(SDCCCFLAGS) -c $<
endif

IC_Sorting.hex: main.c oper_ic.rel oper_led.rel
ifeq ($(RULES),debug)
        sdcc $(DEBUGFLAGS) $^
        packihx main.ihx > IC_Sorting.hex
else
        sdcc $(SDCCCFLAGS) $^
        packihx main.ihx > IC_Sorting.hex
endif
==========================================================
这样用户用make RULES='deubg'便可以编译成可调试目标.但感觉还是不大好,各位大哥,可不可以make debug或make -debug就能达到上面的效果?(没找到make的命令行参数怎样在Makefile中引用,象shell的$1一样.)
发表于 2004-4-19 21:42:05 | 显示全部楼层
有很多源代码的makefile都处理过类似情况,你找一个看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表