版主
主题
帖子
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:) ^- K0 U, T5 i+ S" G
. N+ m( E0 ]5 K0 ? C r( t4 {1. $(@:_config=)什么意思? f; J* p4 r/ [
网上查到如下解释
9 n3 ~6 ~0 P6 S: B2 F( ~# D0 e& L这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.
- o" E# Q' I# n& u这里是一样的道理:
7 T {; P# ?' D F) r( Y; D $(@:_config=) , b; H8 B& s2 S7 z
- c6 p/ i1 H% t7 E) b, V' p) X
@代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了!
9 ?& A1 g2 p7 l- y7 o0 R5 _3 e+ m2 y5 I! F9 s/ T0 R) n
smdk2410_config : unconfig; {; ?8 K# z( \" |0 J5 h
@echo $(@:_config=) # 打印出来看看吧
5 o B$ o5 ] V- Y: ~8 U0 Q {- y @$(MKCONFIG) $(@:_config=) ARM arm920t smdk2410 NULL s3c24x0
3 k' ?9 P( _$ b但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “) k( n8 ]1 a1 Y
all:
" f+ m- t" r5 I# S' d/ b9 o- c1 R @echo $@ 输出是all) Z$ I9 s/ v& G5 l$ T9 W7 i
@echo @ 输出是@
; v5 i% j! _4 U! p7 V8 K L @echo $(@) 输出是all
$ J" {% v) s$ d p. j5 B+ A% a0 h所以我认为符号@在$()中和$@是一样的9 n# p, @' r- Q* j' s
2. 目标 :依赖
' @- M5 ^4 N( M2 d; c 命令/ o- Q% @$ C! J
命令是否可以直接是一个文件名?) g$ G) l$ h+ B ^# | L
做了个测试证明可以:) P& F0 T6 Q3 X9 _8 E0 E
在外面建立一个makecfg 里面输入 echo i am here !
. j4 m: `$ K: Y3 \. P/ u5 v) F$ A在makefile 里2 [( G9 Z( S! R$ W/ t) _# V
all:3 I! p/ ^4 P( @; ~3 k
@(路径/makecfg)
+ ?- M' n3 p+ I! ` 1 D) {7 x; I) N' k
输入命令make all2 I; F: t1 o( e. P+ [% l! |
就会输出 i am here ! |
|