版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
* t4 C( S w5 D# k
, ^' D% |, ]- L1. $(@:_config=)什么意思?
" c) }; a% ?+ b7 ^4 x. r, l网上查到如下解释* D& Q+ I% ]: n
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.3 l8 |: _6 B" M0 v" h) |9 L, \% M
这里是一样的道理:$ q& V% D1 x' m- B) }
$(@:_config=)
+ e0 v. R" W5 N% [
# M7 d' g) p9 A- o @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! 0 ~$ G0 ^* a4 _3 c
7 p6 ^, \. t1 |smdk2410_config : unconfig, L# c' V$ M# I @8 P, n
@echo $(@:_config=) # 打印出来看看吧+ ^# ]- a1 ^- J0 v
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 . j) x0 k: T5 @/ q$ n
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “
' ? M& P }# g- U W! z8 n3 C3 hall:
' h$ d0 w- w: s9 r @echo $@ 输出是all
2 U- S$ y, k0 s V6 W @echo @ 输出是@" |& j- Z2 r/ K# d) _6 B/ \5 T
@echo $(@) 输出是all" B0 w1 J5 Q: N# P% G( a9 G
所以我认为符号@在$()中和$@是一样的. x) r. s- _9 n7 t
2. 目标 :依赖! n' x! Q9 ^' Z9 G
命令) K: m% Q8 K |7 ~
命令是否可以直接是一个文件名?
0 a9 u- H) L. q9 a9 R" m% X9 T( ?做了个测试证明可以:3 `3 @7 ]& o3 e$ w
在外面建立一个makecfg 里面输入 echo i am here !* Q5 s) I; z8 ^
在makefile 里7 D4 n6 _: K7 L% l* f
all:4 }& O5 B- K: Q9 T) F0 M- I
@(路径/makecfg)6 Y% F, R' C8 y. ]5 \
, ] X1 U( E3 U7 s输入命令make all
2 D. Q% ?) r$ `& c$ \! |0 d2 B就会输出 i am here ! |
|