CSDN博客

img plaris060504

关于makefile的使用

发表于2008/10/3 9:55:00  477人阅读

    使用make管理器很简单,只需要在make后面加上目标名就可以创建目标文件,如果直接键入make就会默认建立第一个目标。

    此外,make还有丰富的命令行选项,可以完成各种不同的功能,下表3.17列出了常用的make命令行选项:

    3.17                                                        make的命令行选项

命令格式

含义

-c dir

读入指定目录的makefile

-f file

读入当前目录下的file文件作为makefile

-i

忽略所有的命令执行错误

-I dir

指定被包含的makefile的所在目录

-n

只打印要执行的命令行,但不执行命令

-p

显示make变量数据库和隐式规则

-s

在执行命令时不显示命令

-w

如果make在执行过程中改变目录,则打印当前目录

 

    在这里makefile已经基本看的差不多了,我们就可以来对下面的makefile进行一下分析看看自己的makefile到底学的如果和了,具体的makefile如下:

  1. ###############################################################################
  2. # Makefile for the project cdcmega
  3. ###############################################################################
  4. ## General Flags
  5. PROJECT = cdcmega
  6. #MCU = atmega8
  7. MCU = atmega32
  8. #MCU = atmega88
  9. #MCU = atmega168
  10. CLK = 12000000UL
  11. #CLK = 15000000UL
  12. #CLK = 16000000UL
  13. #CLK = 20000000UL
  14. ## Enables UART receiver interrupt for high speed transfer (!mega8)
  15. INTERRUPT = 0
  16. TARGET = $(PROJECT).elf
  17. CC = avr-gcc.exe
  18. ## Options common to compile, link and assembly rules
  19. COMMON = -mmcu=$(MCU) -DF_CPU=$(CLK) -DUART_RXINT=$(INTERRUPT)
  20. ## Compile options common for all C compilation units.
  21. CFLAGS = $(COMMON)
  22. CFLAGS += -Wall -O3 -fsigned-char
  23. ## Assembly specific flags
  24. ASMFLAGS = $(COMMON)
  25. ASMFLAGS += -x assembler-with-cpp -Wa,
  26. ## Linker flags
  27. LDFLAGS = $(COMMON)
  28. LDFLAGS +=  -Wl,-Map=$(PROJECT).map
  29. ## Intel Hex file production flags
  30. HEX_FLASH_FLAGS = -R .eeprom
  31. ## Include Directories
  32. INCLUDES = -I"." -I"../usbdrv" -I".." 
  33. ## Objects that must be built in order to link
  34. OBJECTS = usbdrv.o usbdrvasm.o oddebug.o uart-asm.o uart.o sw-uart-asm.o sw-uart.o main.o
  35. ## Objects explicitly added by the user
  36. LINKONLYOBJECTS = 
  37. ## Build
  38. all: $(TARGET) $(PROJECT).hex $(PROJECT).lss size
  39. ## Compile
  40. usbdrv.o: ../usbdrv/usbdrv.c
  41.     $(CC) $(INCLUDES) $(CFLAGS) -c  $<
  42. usbdrvasm.o: ../usbdrv/usbdrvasm.S
  43.     $(CC) $(INCLUDES) $(ASMFLAGS) -c  $<
  44. oddebug.o: ../usbdrv/oddebug.c
  45.     $(CC) $(INCLUDES) $(CFLAGS) -c  $<
  46. uart-asm.o: ../uart-asm.S
  47.     $(CC) $(INCLUDES) $(ASMFLAGS) -c  $<
  48. uart.o: ../uart.c
  49.     $(CC) $(INCLUDES) $(CFLAGS) -c  $<
  50. sw-uart-asm.o: ../sw-uart-asm.S
  51.     $(CC) $(INCLUDES) $(ASMFLAGS) -c  $<
  52. sw-uart.o: ../sw-uart.c
  53.     $(CC) $(INCLUDES) $(CFLAGS) -c  $<
  54. main.o: ../main.c
  55.     $(CC) $(INCLUDES) $(CFLAGS) -c  $<
  56. ##Link
  57. $(TARGET): $(OBJECTS)
  58.      $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
  59. %.hex: $(TARGET)
  60.     avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@
  61. %.lss: $(TARGET)
  62.     avr-objdump -h -S $< > $@
  63. size: ${TARGET}
  64.     @echo
  65.     @avr-size -C --mcu=${MCU} ${TARGET}
  66. ## Clean target
  67. .PHONY: clean
  68. clean:
  69.     -rm -rf $(OBJECTS) $(PROJECT).*
0 0

相关博文

我的热门文章

img
取 消
img