版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来: {* l7 g5 ^1 k- @. w9 o
! u5 |2 r* V' P+ G6 D
1. $(@:_config=)什么意思?5 C0 h: g, @) Q6 u5 R5 a$ P3 ^/ X
网上查到如下解释
! W$ P2 A5 y3 q* w这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.
) z/ H( H0 p! z7 X( v" O- _这里是一样的道理:
$ j4 b$ P2 {1 v- }; T $(@:_config=)
0 U3 {6 E! I: l. {% d
1 h8 ~6 T1 W3 g' \# ` @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! 5 |% E" o g+ ~' A7 w9 J7 L8 c4 R
7 _9 C0 t& Q6 P M3 ?4 b( w8 [8 V
smdk2410_config : unconfig
) ?2 M4 k+ D0 O/ D. l @echo $(@:_config=) # 打印出来看看吧
4 c8 n& l& G% g: C4 o" n* g9 b @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
% h6 q: E+ ?: F5 v% g: P. n$ R' S但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “
/ C1 B* A% F; j8 K1 Mall:
: r; I8 o( @: [. P9 [2 m @echo $@ 输出是all
f M% u6 K* j3 {2 E @echo @ 输出是@' ]* |* A3 s5 z
@echo $(@) 输出是all
, H) X K# m* _5 E' N" i; o4 D |所以我认为符号@在$()中和$@是一样的
( v( b3 {; Y' t6 C2. 目标 :依赖
8 A. ?8 i9 _* g( a& h 命令8 G4 ~8 @# Y8 G3 g
命令是否可以直接是一个文件名?, |! _4 l* {2 E
做了个测试证明可以:
8 u( u8 E! J: b5 _ A3 G在外面建立一个makecfg 里面输入 echo i am here !) m+ s" R1 Y* @- o
在makefile 里6 N- u- n7 S. X6 ^0 m. ]" E. Q& b
all:! Z# ~9 W/ ]% z3 m+ R% H6 K W& h
@(路径/makecfg)
/ @5 o4 m4 Z. Y) L) ?7 \3 i' d " U' M$ \' h: I
输入命令make all
! Z1 Z$ \# u8 u+ ~就会输出 i am here ! |
|