版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
. C2 b$ y" X% d0 U( v8 h; [1 T
4 T- J" _* T, C: s, p, I" g3 n6 u' M1. $(@:_config=)什么意思?
; J0 I% f+ y+ N网上查到如下解释. b2 \2 u* Q! ^
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.
$ I+ V ^) u6 R8 }; y7 v这里是一样的道理:1 u8 `3 P$ S: K q, _0 A$ `8 S
$(@:_config=)
y0 N" l6 e$ g ' l0 j' V( m8 s3 L; x: A
@代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了!
0 x0 j* V. q3 x0 F
( d G7 I6 F* r0 F1 M, S* msmdk2410_config : unconfig g# G& W6 u( k$ ~3 z6 Q7 \1 s: U
@echo $(@:_config=) # 打印出来看看吧
7 v& }% L5 w8 ~. q8 K @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
; B5 b7 s' k4 ]& Z但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “% c0 \ g: m! f( z* n# }# t5 ^
all:% L w4 a( t7 L0 ^8 P9 {
@echo $@ 输出是all" C. F& v% p) C O
@echo @ 输出是@
9 q% \- F( Y4 G" Q) _ @echo $(@) 输出是all
- y. _8 O' |; B$ T所以我认为符号@在$()中和$@是一样的
& ?/ j* h+ v+ ]5 l8 H2 |2. 目标 :依赖$ Z, ~/ @2 L$ i/ v* }
命令
! P: [- s, Z- ^0 ^ 命令是否可以直接是一个文件名?
3 N" ~: S/ r4 G) g1 Y做了个测试证明可以:" O e3 y5 ~: A3 u& Y1 z; \
在外面建立一个makecfg 里面输入 echo i am here !
% n! t* y& O! i& l7 ]+ n% B! H在makefile 里 W* v) m8 u5 ~; b
all:, T- V( R; ?" O( _
@(路径/makecfg)
# l, }: H' x* ^" W8 P4 ]( y$ X
4 _0 t+ I" V5 }9 J' @输入命令make all
; v5 Q$ X. F d, w& Q6 Z就会输出 i am here ! |
|