[ZLG-ARM] makefile求助:如何修改makefile使编译输出文件在一个文件夹里?

[复制链接]
 楼主| ATmega16 发表于 2007-8-9 23:11 | 显示全部楼层 |阅读模式
makefile求助:如何修改makefile,使编译生成的.o,.lst,.elf,.map,.sym都在文件家./defualt里?&nbsp;<br />(类似avr_studio).&nbsp;<br /><br /><br /><br />TCHAIN&nbsp;=&nbsp;arm-elf&nbsp;<br /><br />#&nbsp;Define&nbsp;programs&nbsp;and&nbsp;commands.&nbsp;<br />SHELL&nbsp;=&nbsp;sh&nbsp;<br />CC&nbsp;=&nbsp;$(TCHAIN)-gcc&nbsp;<br />CPP&nbsp;=&nbsp;$(TCHAIN)-g++&nbsp;<br />AR&nbsp;=&nbsp;$(TCHAIN)-ar&nbsp;<br />OBJCOPY&nbsp;=&nbsp;$(TCHAIN)-objcopy&nbsp;<br />OBJDUMP&nbsp;=&nbsp;$(TCHAIN)-objdump&nbsp;<br />SIZE&nbsp;=&nbsp;$(TCHAIN)-size&nbsp;<br />NM&nbsp;=&nbsp;$(TCHAIN)-nm&nbsp;<br />REMOVE&nbsp;=&nbsp;rm&nbsp;-f&nbsp;<br />REMOVEDIR&nbsp;=&nbsp;rm&nbsp;-r&nbsp;<br />COPY&nbsp;=&nbsp;cp&nbsp;<br /><br /><br /><br />MCU&nbsp;=&nbsp;arm7tdmi&nbsp;<br />SUBMDL&nbsp;=&nbsp;LPC2106&nbsp;<br />#THUMB&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;-mthumb&nbsp;<br />#THUMB_IW&nbsp;=&nbsp;-mthumb-interwork&nbsp;<br /><br /><br />##&nbsp;Create&nbsp;ROM-Image&nbsp;(final)&nbsp;<br />RUN_MODE=ROM_RUN&nbsp;<br />##&nbsp;Create&nbsp;RAM-Image&nbsp;(debugging)&nbsp;<br />#RUN_MODE=RAM_RUN&nbsp;<br /><br /><br />#&nbsp;Output&nbsp;format.&nbsp;(can&nbsp;be&nbsp;srec,&nbsp;ihex,&nbsp;binary)&nbsp;<br />FORMAT&nbsp;=&nbsp;ihex&nbsp;<br /><br /><br />#&nbsp;List&nbsp;C&nbsp;source&nbsp;files&nbsp;here.&nbsp;(C&nbsp;dependencies&nbsp;are&nbsp;automatically&nbsp;generated.)&nbsp;<br />SRC&nbsp;=&nbsp;$(TARGET).c&nbsp;<br />SRC&nbsp;+=&nbsp;sysTime.c&nbsp;uart.c&nbsp;uartISR.c&nbsp;armVIC.c&nbsp;<br />SRC&nbsp;+=&nbsp;onewire.c&nbsp;crc8.c&nbsp;ds18x20.c&nbsp;delay.c&nbsp;mtutil.c&nbsp;<br /><br /><br />#&nbsp;List&nbsp;Assembler&nbsp;source&nbsp;files&nbsp;here.&nbsp;<br />#&nbsp;Make&nbsp;them&nbsp;always&nbsp;end&nbsp;in&nbsp;a&nbsp;capital&nbsp;.S.&nbsp;&nbsp;Files&nbsp;ending&nbsp;in&nbsp;a&nbsp;lowercase&nbsp;.s&nbsp;<br />#&nbsp;will&nbsp;not&nbsp;be&nbsp;considered&nbsp;source&nbsp;files&nbsp;but&nbsp;generated&nbsp;files&nbsp;(assembler&nbsp;<br />#&nbsp;output&nbsp;from&nbsp;the&nbsp;compiler),&nbsp;and&nbsp;will&nbsp;be&nbsp;deleted&nbsp;upon&nbsp;&quot;make&nbsp;clean&quot;!&nbsp;<br />#&nbsp;Even&nbsp;though&nbsp;the&nbsp;DOS/Win*&nbsp;filesystem&nbsp;matches&nbsp;both&nbsp;.s&nbsp;and&nbsp;.S&nbsp;the&nbsp;same,&nbsp;<br />#&nbsp;it&nbsp;will&nbsp;preserve&nbsp;the&nbsp;spelling&nbsp;of&nbsp;the&nbsp;filenames,&nbsp;and&nbsp;gcc&nbsp;itself&nbsp;does&nbsp;<br />#&nbsp;care&nbsp;about&nbsp;how&nbsp;the&nbsp;name&nbsp;is&nbsp;spelled&nbsp;on&nbsp;its&nbsp;command-line.&nbsp;<br />ASRC&nbsp;=&nbsp;crt0.S&nbsp;<br /><br /><br />#&nbsp;Optimization&nbsp;level,&nbsp;can&nbsp;be&nbsp;[0,&nbsp;1,&nbsp;2,&nbsp;3,&nbsp;s].&nbsp;&nbsp;<br />#&nbsp;0&nbsp;=&nbsp;turn&nbsp;off&nbsp;optimization.&nbsp;s&nbsp;=&nbsp;optimize&nbsp;for&nbsp;size.&nbsp;<br />#&nbsp;(Note:&nbsp;3&nbsp;is&nbsp;not&nbsp;always&nbsp;the&nbsp;best&nbsp;optimization&nbsp;level.&nbsp;See&nbsp;avr-libc&nbsp;FAQ.)&nbsp;<br />OPT&nbsp;=&nbsp;s&nbsp;<br /><br />#&nbsp;Debugging&nbsp;format.&nbsp;<br />#&nbsp;Native&nbsp;formats&nbsp;for&nbsp;AVR-GCC's&nbsp;-g&nbsp;are&nbsp;stabs&nbsp;[default],&nbsp;or&nbsp;dwarf-2.&nbsp;<br />#&nbsp;AVR&nbsp;(extended)&nbsp;COFF&nbsp;requires&nbsp;stabs,&nbsp;plus&nbsp;an&nbsp;avr-objcopy&nbsp;run.&nbsp;<br />#DEBUG&nbsp;=&nbsp;stabs&nbsp;<br />DEBUG&nbsp;=&nbsp;dwarf-2&nbsp;<br /><br />#&nbsp;List&nbsp;any&nbsp;extra&nbsp;directories&nbsp;to&nbsp;look&nbsp;for&nbsp;include&nbsp;files&nbsp;here.&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Each&nbsp;directory&nbsp;must&nbsp;be&nbsp;seperated&nbsp;by&nbsp;a&nbsp;space.&nbsp;<br />#EXTRAINCDIRS&nbsp;=&nbsp;./include&nbsp;<br />EXTRAINCDIRS&nbsp;=&nbsp;&nbsp;<br /><br />#&nbsp;Compiler&nbsp;flag&nbsp;to&nbsp;set&nbsp;the&nbsp;C&nbsp;Standard&nbsp;level.&nbsp;<br />#&nbsp;c89&nbsp;&nbsp;&nbsp;-&nbsp;&quot;ANSI&quot;&nbsp;C&nbsp;<br />#&nbsp;gnu89&nbsp;-&nbsp;c89&nbsp;plus&nbsp;GCC&nbsp;extensions&nbsp;<br />#&nbsp;c99&nbsp;&nbsp;&nbsp;-&nbsp;ISO&nbsp;C99&nbsp;standard&nbsp;(not&nbsp;yet&nbsp;fully&nbsp;implemented)&nbsp;<br />#&nbsp;gnu99&nbsp;-&nbsp;c99&nbsp;plus&nbsp;GCC&nbsp;extensions&nbsp;<br />CSTANDARD&nbsp;=&nbsp;-std=gnu99&nbsp;<br /><br />#&nbsp;Place&nbsp;-D&nbsp;or&nbsp;-U&nbsp;options&nbsp;for&nbsp;C&nbsp;here&nbsp;<br />CDEFS&nbsp;=&nbsp;&nbsp;-D$(RUN_MODE)&nbsp;<br /><br />#&nbsp;Place&nbsp;-I&nbsp;options&nbsp;here&nbsp;<br />CINCS&nbsp;=&nbsp;<br /><br />#&nbsp;Place&nbsp;-D&nbsp;or&nbsp;-U&nbsp;options&nbsp;for&nbsp;ASM&nbsp;here&nbsp;<br />ADEFS&nbsp;=&nbsp;&nbsp;-D$(RUN_MODE)&nbsp;<br /><br /><br />#&nbsp;Compiler&nbsp;flags.&nbsp;<br />#&nbsp;&nbsp;-g*:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;generate&nbsp;debugging&nbsp;information&nbsp;<br />#&nbsp;&nbsp;-O*:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimization&nbsp;level&nbsp;<br />#&nbsp;&nbsp;-f...:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tuning,&nbsp;see&nbsp;GCC&nbsp;manual&nbsp;and&nbsp;avr-libc&nbsp;documentation&nbsp;<br />#&nbsp;&nbsp;-Wall...:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;warning&nbsp;level&nbsp;<br />#&nbsp;&nbsp;-Wa,...:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tell&nbsp;GCC&nbsp;to&nbsp;pass&nbsp;this&nbsp;to&nbsp;the&nbsp;assembler.&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;-adhlns...:&nbsp;create&nbsp;assembler&nbsp;listing&nbsp;<br />CFLAGS&nbsp;=&nbsp;-g$(DEBUG)&nbsp;<br />CFLAGS&nbsp;+=&nbsp;$(CDEFS)&nbsp;$(CINCS)&nbsp;<br />CFLAGS&nbsp;+=&nbsp;-O$(OPT)&nbsp;<br />CFLAGS&nbsp;+=&nbsp;-Wall&nbsp;-Wstrict-prototypes&nbsp;-Wcast-align&nbsp;-Wcast-qual&nbsp;-Wimplicit&nbsp;&nbsp;<br />CFLAGS&nbsp;+=&nbsp;-Wmissing-declarations&nbsp;<br />CFLAGS&nbsp;+=&nbsp;-Wmissing-prototypes&nbsp;-Wnested-externs&nbsp;-Wpointer-arith&nbsp;-Wswitch&nbsp;<br />CFLAGS&nbsp;+=&nbsp;-Wredundant-decls&nbsp;-Wreturn-type&nbsp;-Wshadow&nbsp;-Wstrict-prototypes&nbsp;-Wunused&nbsp;<br />CFLAGS&nbsp;+=&nbsp;-Wa,-adhlns=$(&lt:.c=.lst)&nbsp;<br />CFLAGS&nbsp;+=&nbsp;$(patsubst&nbsp;%,-I%,$(EXTRAINCDIRS))&nbsp;<br />CFLAGS&nbsp;+=&nbsp;$(CSTANDARD)&nbsp;<br />##&nbsp;NONO&nbsp;CFLAGS&nbsp;+=&nbsp;-funsigned-char&nbsp;-funsigned-bitfields&nbsp;-fpack-struct&nbsp;-fshort-enums&nbsp;<br /><br />#&nbsp;Assembler&nbsp;flags.&nbsp;<br />#&nbsp;&nbsp;-Wa,...:&nbsp;&nbsp;&nbsp;tell&nbsp;GCC&nbsp;to&nbsp;pass&nbsp;this&nbsp;to&nbsp;the&nbsp;assembler.&nbsp;<br />#&nbsp;&nbsp;-ahlms:&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;listing&nbsp;<br />#&nbsp;&nbsp;-gstabs:&nbsp;&nbsp;&nbsp;have&nbsp;the&nbsp;assembler&nbsp;create&nbsp;line&nbsp;number&nbsp;information;&nbsp;note&nbsp;that&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;use&nbsp;in&nbsp;COFF&nbsp;files,&nbsp;additional&nbsp;information&nbsp;about&nbsp;filenames&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;function&nbsp;names&nbsp;needs&nbsp;to&nbsp;be&nbsp;present&nbsp;in&nbsp;the&nbsp;assembler&nbsp;source&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files&nbsp;--&nbsp;see&nbsp;avr-libc&nbsp;docs&nbsp;[FIXME:&nbsp;not&nbsp;yet&nbsp;described&nbsp;there]&nbsp;<br />##ASFLAGS&nbsp;=&nbsp;-Wa,-adhlns=$(&lt:.S=.lst),-gstabs&nbsp;&nbsp;<br />ASFLAGS&nbsp;=&nbsp;$(ADEFS)&nbsp;-Wa,-adhlns=$(&lt:.S=.lst),-g$(DEBUG)&nbsp;<br /><br />#Additional&nbsp;libraries.&nbsp;<br /><br />#Support&nbsp;for&nbsp;newlibc-lpc&nbsp;(file:&nbsp;libnewlibc-lpc.a)&nbsp;<br />#NEWLIBLPC&nbsp;=&nbsp;-lnewlib-lpc&nbsp;<br />NEWLIBCLPC&nbsp;=&nbsp;<br /><br />MATH_LIB&nbsp;=&nbsp;-lm&nbsp;<br /><br />#&nbsp;Linker&nbsp;flags.&nbsp;<br />#&nbsp;&nbsp;-Wl,...:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tell&nbsp;GCC&nbsp;to&nbsp;pass&nbsp;this&nbsp;to&nbsp;linker.&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;-Map:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;create&nbsp;map&nbsp;file&nbsp;<br />#&nbsp;&nbsp;&nbsp;&nbsp;--cref:&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;cross&nbsp;reference&nbsp;to&nbsp;&nbsp;map&nbsp;file&nbsp;<br />LDFLAGS&nbsp;=&nbsp;-nostartfiles&nbsp;-Wl,-Map=$(TARGET).map,--cref&nbsp;<br />LDFLAGS&nbsp;+=&nbsp;-lc&nbsp;<br />LDFLAGS&nbsp;+=&nbsp;$(NEWLIBLPC)&nbsp;$(MATH_LIB)&nbsp;<br />LDFLAGS&nbsp;+=&nbsp;-lc&nbsp;-lgcc&nbsp;<br /><br />#&nbsp;Set&nbsp;Linker-Script&nbsp;Depending&nbsp;On&nbsp;Selected&nbsp;Memory&nbsp;<br />ifeq&nbsp;($(RUN_MODE),RAM_RUN)&nbsp;<br />LDFLAGS&nbsp;+=-T$(SUBMDL)-RAM.ld&nbsp;<br />else&nbsp;&nbsp;<br />LDFLAGS&nbsp;+=-T$(SUBMDL)-ROM.ld&nbsp;<br />endif&nbsp;<br /><br /><br /><br />#&nbsp;---------------------------------------------------------------------------&nbsp;<br />#&nbsp;Flash-Programming&nbsp;support&nbsp;using&nbsp;lpc21isp&nbsp;by&nbsp;Martin&nbsp;Maurer&nbsp;&nbsp;<br /><br />#&nbsp;Settings&nbsp;and&nbsp;variables:&nbsp;<br />LPC21ISP&nbsp;=&nbsp;lpc21isp&nbsp;<br />LPC21ISP_PORT&nbsp;=&nbsp;com1&nbsp;<br />LPC21ISP_BAUD&nbsp;=&nbsp;115200&nbsp;<br />LPC21ISP_XTAL&nbsp;=&nbsp;14746&nbsp;<br />LPC21ISP_FLASHFILE&nbsp;=&nbsp;$(TARGET).hex&nbsp;<br />#&nbsp;verbose&nbsp;output:&nbsp;<br />##&nbsp;LPC21ISP_DEBUG&nbsp;=&nbsp;-debug&nbsp;<br />#&nbsp;enter&nbsp;bootloader&nbsp;via&nbsp;RS232&nbsp;DTR/RTS&nbsp;(only&nbsp;if&nbsp;hardware&nbsp;supports&nbsp;this&nbsp;<br />#&nbsp;feature&nbsp;-&nbsp;see&nbsp;Philips&nbsp;AppNote):&nbsp;<br />##&nbsp;LPC21ISP_CONTROL&nbsp;=&nbsp;-control&nbsp;<br /><br /><br />#&nbsp;---------------------------------------------------------------------------&nbsp;<br /><br />#&nbsp;Define&nbsp;directories,&nbsp;if&nbsp;needed.&nbsp;<br />##&nbsp;DIRARM&nbsp;=&nbsp;c:/WinARM/&nbsp;<br />##&nbsp;DIRARMBIN&nbsp;=&nbsp;$(DIRAVR)/bin/&nbsp;<br />##&nbsp;DIRAVRUTILS&nbsp;=&nbsp;$(DIRAVR)/utils/bin/&nbsp;<br /><br /><br /><br />#&nbsp;Define&nbsp;Messages&nbsp;<br />#&nbsp;English&nbsp;<br />MSG_ERRORS_NONE&nbsp;=&nbsp;Errors:&nbsp;none&nbsp;<br />MSG_BEGIN&nbsp;=&nbsp;--------&nbsp;begin&nbsp;--------&nbsp;<br />MSG_END&nbsp;=&nbsp;--------&nbsp;&nbsp;end&nbsp;&nbsp;--------&nbsp;<br />MSG_SIZE_BEFORE&nbsp;=&nbsp;Size&nbsp;before:&nbsp;&nbsp;<br />MSG_SIZE_AFTER&nbsp;=&nbsp;Size&nbsp;after:&nbsp;<br />MSG_FLASH&nbsp;=&nbsp;Creating&nbsp;load&nbsp;file&nbsp;for&nbsp;Flash:&nbsp;<br />MSG_EXTENDED_LISTING&nbsp;=&nbsp;Creating&nbsp;Extended&nbsp;Listing:&nbsp;<br />MSG_SYMBOL_TABLE&nbsp;=&nbsp;Creating&nbsp;Symbol&nbsp;Table:&nbsp;<br />MSG_LINKING&nbsp;=&nbsp;Linking:&nbsp;<br />MSG_COMPILING&nbsp;=&nbsp;Compiling:&nbsp;<br />MSG_ASSEMBLING&nbsp;=&nbsp;Assembling:&nbsp;<br />MSG_CLEANING&nbsp;=&nbsp;Cleaning&nbsp;project:&nbsp;<br />MSG_LPC21_RESETREMINDER&nbsp;=&nbsp;You&nbsp;may&nbsp;have&nbsp;to&nbsp;bring&nbsp;the&nbsp;target&nbsp;in&nbsp;bootloader-mode&nbsp;now.&nbsp;<br /><br /><br />#&nbsp;Define&nbsp;all&nbsp;object&nbsp;files.&nbsp;<br />OBJ&nbsp;=&nbsp;$(SRC:.c=.o)&nbsp;$(ASRC:.S=.o)&nbsp;&nbsp;<br /><br /><br />#&nbsp;Define&nbsp;all&nbsp;listing&nbsp;files.&nbsp;<br />LST&nbsp;=&nbsp;$(ASRC:.S=.lst)&nbsp;$(SRC:.c=.lst)&nbsp;<br /><br /><br />#&nbsp;Compiler&nbsp;flags&nbsp;to&nbsp;generate&nbsp;dependency&nbsp;files.&nbsp;<br />###&nbsp;GENDEPFLAGS&nbsp;=&nbsp;-Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d&nbsp;<br />GENDEPFLAGS&nbsp;=&nbsp;-MD&nbsp;-MP&nbsp;-MF&nbsp;.dep/$(@F).d&nbsp;<br /><br />#&nbsp;Combine&nbsp;all&nbsp;necessary&nbsp;flags&nbsp;and&nbsp;optional&nbsp;flags.&nbsp;<br />#&nbsp;Add&nbsp;target&nbsp;processor&nbsp;to&nbsp;flags.&nbsp;<br />ALL_CFLAGS&nbsp;=&nbsp;-mcpu=$(MCU)&nbsp;$(THUMB_IW)&nbsp;-I.&nbsp;$(CFLAGS)&nbsp;$(GENDEPFLAGS)&nbsp;<br />ALL_ASFLAGS&nbsp;=&nbsp;-mcpu=$(MCU)&nbsp;$(THUMB_IW)&nbsp;-I.&nbsp;-x&nbsp;assembler-with-cpp&nbsp;$(ASFLAGS)&nbsp;<br /><br /><br />#&nbsp;Default&nbsp;target.&nbsp;<br />all:&nbsp;begin&nbsp;gccversion&nbsp;sizebefore&nbsp;build&nbsp;sizeafter&nbsp;finished&nbsp;end&nbsp;<br /><br />build:&nbsp;elf&nbsp;hex&nbsp;lss&nbsp;sym&nbsp;<br /><br />elf:&nbsp;$(TARGET).elf&nbsp;<br />hex:&nbsp;$(TARGET).hex&nbsp;<br />lss:&nbsp;$(TARGET).lss&nbsp;&nbsp;<br />sym:&nbsp;$(TARGET).sym&nbsp;<br /><br />#&nbsp;Eye&nbsp;candy.&nbsp;<br />begin:&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_BEGIN)&nbsp;<br /><br />finished:&nbsp;<br />@echo&nbsp;$(MSG_ERRORS_NONE)&nbsp;<br /><br />end:&nbsp;<br />@echo&nbsp;$(MSG_END)&nbsp;<br />@echo&nbsp;<br /><br /><br />#&nbsp;Display&nbsp;size&nbsp;of&nbsp;file.&nbsp;<br />HEXSIZE&nbsp;=&nbsp;$(SIZE)&nbsp;--target=$(FORMAT)&nbsp;$(TARGET).hex&nbsp;<br />ELFSIZE&nbsp;=&nbsp;$(SIZE)&nbsp;-A&nbsp;$(TARGET).elf&nbsp;<br />sizebefore:&nbsp;<br />@if&nbsp;[&nbsp;-f&nbsp;$(TARGET).elf&nbsp;];&nbsp;then&nbsp;echo;&nbsp;echo&nbsp;$(MSG_SIZE_BEFORE);&nbsp;$(ELFSIZE);&nbsp;echo;&nbsp;fi&nbsp;<br /><br />sizeafter:&nbsp;<br />@if&nbsp;[&nbsp;-f&nbsp;$(TARGET).elf&nbsp;];&nbsp;then&nbsp;echo;&nbsp;echo&nbsp;$(MSG_SIZE_AFTER);&nbsp;$(ELFSIZE);&nbsp;echo;&nbsp;fi&nbsp;<br /><br /><br />#&nbsp;Display&nbsp;compiler&nbsp;version&nbsp;information.&nbsp;<br />gccversion&nbsp;:&nbsp;&nbsp;<br />@$(CC)&nbsp;--version&nbsp;<br /><br /><br />#&nbsp;Program&nbsp;the&nbsp;device.&nbsp;&nbsp;&nbsp;<br />program:&nbsp;$(TARGET).hex&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_LPC21_RESETREMINDER)&nbsp;<br />$(LPC21ISP)&nbsp;$(LPC21ISP_CONTROL)&nbsp;$(LPC21ISP_DEBUG)&nbsp;$(LPC21ISP_FLASHFILE)&nbsp;$(LPC21ISP_PORT)&nbsp;$(LPC21ISP_BAUD)&nbsp;$(LPC21ISP_XTAL)&nbsp;<br /><br /><br />#&nbsp;Create&nbsp;final&nbsp;output&nbsp;files&nbsp;(.hex,&nbsp;.eep)&nbsp;from&nbsp;ELF&nbsp;output&nbsp;file.&nbsp;<br />#&nbsp;TODO:&nbsp;handling&nbsp;the&nbsp;.eeprom-section&nbsp;should&nbsp;be&nbsp;redundant&nbsp;<br />%.hex:&nbsp;%.elf&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_FLASH)&nbsp;$@&nbsp;<br />$(OBJCOPY)&nbsp;-O&nbsp;$(FORMAT)&nbsp;$&lt&nbsp;$@&nbsp;<br /><br /><br />#&nbsp;Create&nbsp;extended&nbsp;listing&nbsp;file&nbsp;from&nbsp;ELF&nbsp;output&nbsp;file.&nbsp;<br />%.lss:&nbsp;%.elf&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_EXTENDED_LISTING)&nbsp;$@&nbsp;<br />$(OBJDUMP)&nbsp;-h&nbsp;-S&nbsp;$&lt&nbsp;&gt&nbsp;$@&nbsp;<br /><br /><br />#&nbsp;Create&nbsp;a&nbsp;symbol&nbsp;table&nbsp;from&nbsp;ELF&nbsp;output&nbsp;file.&nbsp;<br />%.sym:&nbsp;%.elf&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_SYMBOL_TABLE)&nbsp;$@&nbsp;<br />$(NM)&nbsp;-n&nbsp;$&lt&nbsp;&gt&nbsp;$@&nbsp;<br /><br /><br />#&nbsp;Link:&nbsp;create&nbsp;ELF&nbsp;output&nbsp;file&nbsp;from&nbsp;object&nbsp;files.&nbsp;<br />.SECONDARY&nbsp;:&nbsp;$(TARGET).elf&nbsp;<br />.PRECIOUS&nbsp;:&nbsp;$(OBJ)&nbsp;<br />%.elf:&nbsp;$(OBJ)&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_LINKING)&nbsp;$@&nbsp;<br />$(CC)&nbsp;$(THUMB)&nbsp;$(ALL_CFLAGS)&nbsp;$(OBJ)&nbsp;--output&nbsp;$@&nbsp;$(LDFLAGS)&nbsp;<br /><br /><br />#&nbsp;Compile:&nbsp;create&nbsp;object&nbsp;files&nbsp;from&nbsp;C&nbsp;source&nbsp;files.&nbsp;<br />%.o&nbsp;:&nbsp;%.c&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_COMPILING)&nbsp;$&lt&nbsp;<br />$(CC)&nbsp;-c&nbsp;$(THUMB)&nbsp;$(ALL_CFLAGS)&nbsp;$&lt&nbsp;-o&nbsp;$@&nbsp;&nbsp;<br /><br /><br />#&nbsp;Compile:&nbsp;create&nbsp;assembler&nbsp;files&nbsp;from&nbsp;C&nbsp;source&nbsp;files.&nbsp;<br />%.s&nbsp;:&nbsp;%.c&nbsp;<br />$(CC)&nbsp;$(THUMB)&nbsp;-S&nbsp;$(ALL_CFLAGS)&nbsp;$&lt&nbsp;-o&nbsp;$@&nbsp;<br /><br /><br />#&nbsp;Assemble:&nbsp;create&nbsp;object&nbsp;files&nbsp;from&nbsp;assembler&nbsp;source&nbsp;files.&nbsp;<br />%.o&nbsp;:&nbsp;%.S&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_ASSEMBLING)&nbsp;$&lt&nbsp;<br />$(CC)&nbsp;-c&nbsp;$(ALL_ASFLAGS)&nbsp;$&lt&nbsp;-o&nbsp;$@&nbsp;<br /><br /><br />#&nbsp;Target:&nbsp;clean&nbsp;project.&nbsp;<br />clean:&nbsp;begin&nbsp;clean_list&nbsp;finished&nbsp;end&nbsp;<br /><br /><br />clean_list&nbsp;:&nbsp;<br />@echo&nbsp;<br />@echo&nbsp;$(MSG_CLEANING)&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).hex&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).obj&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).elf&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).map&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).obj&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).a90&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).sym&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).lnk&nbsp;<br />$(REMOVE)&nbsp;$(TARGET).lss&nbsp;<br />$(REMOVE)&nbsp;$(OBJ)&nbsp;<br />$(REMOVE)&nbsp;$(LST)&nbsp;<br />$(REMOVE)&nbsp;$(SRC:.c=.s)&nbsp;<br />$(REMOVE)&nbsp;$(SRC:.c=.d)&nbsp;<br />$(REMOVE)&nbsp;.dep/*&nbsp;<br /><br /><br />#&nbsp;Include&nbsp;the&nbsp;dependency&nbsp;files.&nbsp;<br />-include&nbsp;$(shell&nbsp;mkdir&nbsp;.dep&nbsp;2&gt/dev/null)&nbsp;$(wildcard&nbsp;.dep/*)&nbsp;<br /><br /><br />#&nbsp;Listing&nbsp;of&nbsp;phony&nbsp;targets.&nbsp;<br />.PHONY&nbsp;:&nbsp;all&nbsp;begin&nbsp;finish&nbsp;end&nbsp;sizebefore&nbsp;sizeafter&nbsp;gccversion&nbsp;\&nbsp;<br />build&nbsp;elf&nbsp;hex&nbsp;lss&nbsp;sym&nbsp;\&nbsp;<br />clean&nbsp;clean_list&nbsp;program&nbsp;<br />
armecos 发表于 2007-8-10 06:53 | 显示全部楼层

有比这种写法更好的形式

&nbsp;&nbsp;&nbsp;&nbsp;《ecos增值包》里早就提供了《多目录下makefile的通用写法》。在每个子目录里建立debug或release子目录,把临时/中间生成的文件全都扔在那里面,能够清晰地识别出发行或调试版本,清除时用make&nbsp;clean,不会污染源码目录,找起来也方便。<br />&nbsp;&nbsp;&nbsp;&nbsp;而且把编译模式、版本控制、平台优化、库路径、C/C++编译标志、交叉编译工具等做成通用的模板,想怎么控制就怎么控制,不会遗漏任何细节,可以根据实际情况灵活配置编译环境,支持多目录编译。<br />&nbsp;&nbsp;&nbsp;&nbsp;ecos&nbsp;for&nbsp;smartarm2200增值包,¥350,www.armecos.com<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;以下是文档,双击进入:<br />&nbsp;&nbsp;&nbsp;&nbsp;《多目录下makefile的通用写法》
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

229

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

109

主题

229

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部