版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
& t8 W/ R a: H I7 n8 v& @ 7 C( {+ Q" p8 l9 N4 S
1. $(@:_config=)什么意思?% O, H8 N* L& ?* ?& ^6 L
网上查到如下解释- u+ V9 W9 n: \
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.6 Z t8 J0 @- ?7 g
这里是一样的道理:
% W9 w* ]& i9 ], Z/ k# T7 Q $(@:_config=)
$ Z4 _/ K# B" T4 w& v# z$ E, _
, p* `, E; o* S$ {$ L, h @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! 1 e$ c( y. |/ g
% V- q& n: O% [* ?/ `9 usmdk2410_config : unconfig# E) q; G* z8 W) L
@echo $(@:_config=) # 打印出来看看吧
) I+ v. X* m! W! {: H4 h @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 2 Q+ J5 E& _& @- @) P# d: l. ~- U- ^9 Q
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “, L/ s: L8 z- H8 x) z5 J1 G4 Z
all:, g/ p( u* N6 o" Q' M5 h: q0 k: B
@echo $@ 输出是all
* U0 m+ q+ g# l& w, b* _ @echo @ 输出是@
0 ?. O$ R/ d9 u. I; V7 o. S @echo $(@) 输出是all. ~& r7 Y1 C: D0 J' [. @2 v
所以我认为符号@在$()中和$@是一样的
2 {7 Y4 T" u, Z% o# U2. 目标 :依赖) i8 d+ g8 a+ l( f6 W2 N& B
命令6 v0 T r7 E$ J; T9 Y% t
命令是否可以直接是一个文件名?
6 ]' i! e0 T. Y/ g& M" [0 A做了个测试证明可以: S8 ^8 P' P. D& \" y" C- V- `
在外面建立一个makecfg 里面输入 echo i am here !6 _3 ~! ], u9 t: Z# |
在makefile 里" ]: G3 G' J# e
all:
0 _1 a! c$ z9 |. v% F @(路径/makecfg)
8 _3 i6 v( w$ c% K% n. c! C # t) {- e6 P; o1 F
输入命令make all1 L% g2 y y' S- t+ _
就会输出 i am here ! |
|