版主
主题
帖子
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:! Z7 R: J6 u, w6 O
. j/ N4 S) z9 G
1. $(@:_config=)什么意思?
0 r1 z1 G' ^) u/ g4 N/ X网上查到如下解释
( _- |- q j: D0 E2 E8 x, J这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.5 {4 u, \: W# J& o0 s
这里是一样的道理:5 c) I, _6 [% O2 W9 L0 a
$(@:_config=) W, z4 z; ]! J: U
! l7 ?( f% p5 o6 |
@代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了!
" g9 n8 o1 Y+ K3 {, w. { h+ D& @9 Z' n
smdk2410_config : unconfig1 } X" n" q, W3 g/ A) w ~, b) R
@echo $(@:_config=) # 打印出来看看吧
8 R7 l5 a% U5 Y0 G6 I @$(MKCONFIG) $(@:_config=) ARM arm920t smdk2410 NULL s3c24x0
3 _, B/ p* {, Z9 T' \! ?但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “8 p6 m3 o- P+ d& d! X& s0 ~# b
all:8 m; a3 u& k+ R) @- K3 T
@echo $@ 输出是all
_/ s6 I, ^! ?* q2 l @echo @ 输出是@
! K+ `6 P$ a4 l @echo $(@) 输出是all
; m" I1 @# B6 r4 |' g所以我认为符号@在$()中和$@是一样的
) B: W5 e; B# a: {# N, B$ W2. 目标 :依赖7 Y+ A# v/ v& a3 B
命令
) W6 j: b" T5 z% x 命令是否可以直接是一个文件名?, b/ P6 h& h3 d1 m! B" \
做了个测试证明可以:
8 K1 j+ Y7 C2 y! C在外面建立一个makecfg 里面输入 echo i am here !1 E0 A2 Y c# {% u) W
在makefile 里
5 I$ t2 O8 ^; O, X4 [all:9 Z+ v5 p) b1 u/ H
@(路径/makecfg)1 w0 |$ K; A8 e y: P3 V
" T; z8 @2 ~- Q" v& [输入命令make all7 l% h5 B% S$ |, M( v
就会输出 i am here ! |
|