版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:0 ]; Z* S; S/ Z' j' N2 B) V+ \
( N$ P9 ?: x) Q( C! N1. $(@:_config=)什么意思?& C$ x% S; e- r7 I' I: U
网上查到如下解释. z8 I) w! n; Z, S# ]
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.
8 B! s: I! P; b2 y: k& ~" B$ J$ a这里是一样的道理:
5 c! ^5 Y- I0 Q. s( D' l5 a- S $(@:_config=) " y$ O6 g# U+ R
- y; @2 c3 N' w) }7 z$ V% } @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! 4 o% v/ ?# G% V+ @$ @7 Z. t+ ^. O
7 |0 U" p {8 D7 p4 O
smdk2410_config : unconfig9 z" R8 j' l2 b5 e, T% q a
@echo $(@:_config=) # 打印出来看看吧
4 ~# Q) m" S x% p' u @$(MKCONFIG) $(@:_config=) ARM arm920t smdk2410 NULL s3c24x0 4 i- u( i% v2 \; m2 V) w8 w, D5 E
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “. Z0 T5 c0 p) q1 o" A: Y
all:* o* i5 W+ D% F7 J& j
@echo $@ 输出是all
' ~. ~' D9 w3 c# v3 |9 C @echo @ 输出是@5 Q, m8 n- q$ {: ?; h" g
@echo $(@) 输出是all- z6 z) ]' r' x' B$ }+ Y( }
所以我认为符号@在$()中和$@是一样的
3 ^8 t8 P% N. Q0 r& W2. 目标 :依赖3 n; M$ d; J+ ?7 J; \' N0 |' N
命令7 A4 v* o D- {( m4 Y
命令是否可以直接是一个文件名?
7 A, [1 i5 T! o" g做了个测试证明可以:6 s2 f8 m! t- }: t6 k4 T* @( T% H4 z
在外面建立一个makecfg 里面输入 echo i am here !
2 s1 s2 W$ s# d/ y/ F; _7 D; k在makefile 里/ p" U. S1 i2 q6 R5 l4 |. n4 B
all:* ^8 k" S3 f; X- M. C$ c' p
@(路径/makecfg)
3 w* _% d/ m7 t$ T: l2 d9 x) C' j5 r
# s8 _9 V3 Y9 S, E6 y3 ]输入命令make all
c/ R- ]1 _1 t! q7 s( R9 w就会输出 i am here ! |
|