版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:4 G$ q" |: f& e6 F6 }4 n6 r3 @
) i$ P( h) P8 m# y1 F
1. $(@:_config=)什么意思? u8 g% Q ^8 x# A) t9 l
网上查到如下解释" n! _1 W5 Q6 o& e0 R
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.
" p# p0 |7 V: a3 l& W; R8 Q b7 q这里是一样的道理:/ @0 F4 W1 n% W i
$(@:_config=)
9 I# Z+ a% L' y. @- C0 i& N9 }
9 V. }/ `$ N% X' v; ~! w @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! o/ N! Z! K4 \: E2 g
6 L) F7 {9 a( O( _- ]4 jsmdk2410_config : unconfig4 n( b% n2 f, V1 O5 X: Q
@echo $(@:_config=) # 打印出来看看吧5 M' n* C5 o# z4 U) a. g
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
) t& ^8 y# e1 ^/ H( t但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “5 y3 ^+ H- k- d9 ~; D
all:
% }. j- x5 i7 n$ w @echo $@ 输出是all
; s" u D) O! v" d @echo @ 输出是@
& D" f) G$ a, [3 v7 [ @echo $(@) 输出是all. W9 F" c8 e% \+ k. S9 r0 N: B _
所以我认为符号@在$()中和$@是一样的* Y3 M+ T* h/ G# d1 f
2. 目标 :依赖
: V3 t+ V# C; ?7 v2 G 命令9 X! _& X3 s& V
命令是否可以直接是一个文件名?
, v; H% t2 b# x: G! p/ k做了个测试证明可以:# V/ B3 J/ c+ D
在外面建立一个makecfg 里面输入 echo i am here !
( g$ i' {* I* F2 u9 n8 b在makefile 里4 Y! q7 G! b* F7 F
all:
: |3 D% x j9 Y2 T( n. x @(路径/makecfg)2 T" {7 w8 A2 z
7 ~% G1 @9 @* d1 a输入命令make all2 K, G' [4 o/ [
就会输出 i am here ! |
|