版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
! `$ }7 R( G; J/ Z" p$ }, @$ f
& C/ `+ [0 k1 `# [" }4 Y" H1. $(@:_config=)什么意思?
& ?9 [, s$ Z s- v5 F# Y- i网上查到如下解释
2 l% [0 P9 P% s2 W5 O3 s! j这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.5 p8 h# F$ y3 R- J$ M/ f% E% U; B4 W
这里是一样的道理:
- w% Y5 C5 f$ ~. n, U2 z' {3 G $(@:_config=) 9 G* \4 V( W9 q) r
: s) G3 Y' x8 T/ Z @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! ( ~+ t; W7 q, J
8 @& Z; E) L' j2 \6 Vsmdk2410_config : unconfig" _1 z, D" b* L
@echo $(@:_config=) # 打印出来看看吧
# {. }& \( B$ k @$(MKCONFIG) $(@:_config=) ARM arm920t smdk2410 NULL s3c24x0
! v; B [ s. S但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “$ V* d% P( J/ R" A3 j S
all:# }% ?: i' q: ^9 q5 T
@echo $@ 输出是all8 x1 M% L& q4 V8 C% B
@echo @ 输出是@
. J* R( R8 V: p$ U @echo $(@) 输出是all
+ _+ ?+ j* I5 f; a所以我认为符号@在$()中和$@是一样的
! ]3 M4 b- v) e2 ?' d/ t$ T( y9 ^2. 目标 :依赖8 O7 D x1 L, r* f8 C4 p/ l9 A; @+ d4 H
命令
: V( x. N* J8 V' Y" |$ Y 命令是否可以直接是一个文件名?
4 f! H; C" w% @# V0 ]. j做了个测试证明可以:$ [$ L/ M# i. u8 p% y) u
在外面建立一个makecfg 里面输入 echo i am here !
: e# u/ S( {1 P \0 R3 O在makefile 里( Y# O6 K) k4 O6 a5 Y, g! a
all:' L& ]: S4 m+ m& ]% B
@(路径/makecfg)$ c, \' U! C D5 {6 n- |- X
8 b9 f. R: o0 T/ D" I$ E _* i- a输入命令make all
: R8 i/ @( G- |1 ]! X就会输出 i am here ! |
|