makefile文件格式

1、makefile文件内部

1.1、表达式

$^ :   所有源文件 ARM-GCC
$@ :   全路径目标文件
$? :   源文件
$* :   除去扩展名全路径目标文件
$< :   源文件(只在隐含规则中有效)
$? :   依赖文件中被改变的文件
$(@:_elf=) :   去掉目标文件中_elf字样
%   :   表示字符通配符,一切字符
//以下程序
.PHONY : clean
clean :
    rm *.dis
//通常情况下,若没有.PHONY : clean,那么程序只有在进行make clean的时候clean下的命令才会执行,而加上.PHONY : clean的时候,clean在每次make命令的时候就会运行,也即是给予clean一个假想的目标,并且该目标永远是处于更新状态,以此达到没有依赖文件也能每次进行make的目的
clean :
    rm *.dis
tags : clean
    rm *.bin *.lib
若执行make clean则只执行clean下面的语句,若执行make tags则先执行clean再执行tags
export XX XXX
将XX XXX变量传递给子make,也可以用-e选项进行变量的传递
函数的调用:$(function argument)
例如:$(hellow 1 2 3)

immediate = deferred
immediate := deferred
immediate ?= deferred
immediate += deferred
define immediate
deferred
endef
:= ; 立即启用变量
?= ; 若前面已经定义变量,此处不进行定义
=  ; 变量在使用的时候才进行赋值 

2、链接文件

2.1、汇编源文件

ENTRY:运行一个程序时第一个被执行到的指令的入口地址,即指定汇编程序的入口

.type __lookup_processor_type, %function 用来说明标号__lookup_processor_type是一个函数

3、makefile常用函数

字符串查找替换
$(subst ,,<text>)
把text中的from字符串替换为to字符串
例:$(subst he,HE,hellow)
把hellow中的he替换为HE

模式查找替换
$(patsubst PATTERN,REPLACEMENT,TEXT)
TEXT中符合PATTERN格式的字符串统统替换为REPLACEMENT
例:$(patsubst %.s,%.asm,list.s test.s)
把list.s test.s替换为list.asm test.asm

合并空格
$(strip STRINT)
把STRINT里面的多个连续空格合并为一个
例:$(strip 1   2 3   4)
返回为1 2 3 4

字符串查找
$(findstring FIND,IN)
从IN里面查找FIND字符串,找到则返回FIND,否则返回空
例:$(findstring he,hellow)
该例子返回he字符串

更多请查看这里:http://download.csdn.net/detail/u013904227/9506313

你可能感兴趣的:(linux,STM32学习之路)