版主
主题
帖子
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:1 m d, ~+ r7 B) D; f* E
, H8 z: @& u, D, X5 x
1. $(@:_config=)什么意思?
7 F( j% A- o+ ]网上查到如下解释
$ l& Z" r+ Z& c7 b* |6 G2 d; h3 S这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.3 A( D# _7 \+ [# W
这里是一样的道理:
/ {/ u9 N0 n9 M9 P/ Q+ N. Q $(@:_config=) 8 d# ?0 \! O, m/ I8 b4 I" F, P
! ^: S/ I! X7 b5 F% X" G- c. ~* L& w
@代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! / }6 R7 \! c3 B3 A- _3 w; a, A
0 y+ c9 b5 D( H" d# \3 Usmdk2410_config : unconfig
) y7 I# E3 G; Y, J: P3 O @echo $(@:_config=) # 打印出来看看吧9 S6 Z' W8 t- P) e* W2 F" a
@$(MKCONFIG) $(@:_config=) ARM arm920t smdk2410 NULL s3c24x0 4 K& g- L, b8 t* ^: f8 C
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “3 K2 }( a: w3 X; a$ `
all:
" x8 @. @& l- L V @echo $@ 输出是all
4 e: W0 I) s8 I2 X* n7 m0 | @echo @ 输出是@4 Y/ W9 O! ?& W1 n0 @! j% l& b
@echo $(@) 输出是all# T- c7 o' c: y7 j
所以我认为符号@在$()中和$@是一样的- i I8 z, I4 Q5 {3 {+ J
2. 目标 :依赖+ R& ]" ?8 J5 N8 ?
命令
6 ]( I% e6 d: Y$ ^5 t9 j 命令是否可以直接是一个文件名?
4 Y$ s7 b4 A' v0 @- F/ A做了个测试证明可以:
% a! V* T6 T9 Q& U7 @9 @& [7 n在外面建立一个makecfg 里面输入 echo i am here !- i/ c+ j$ p, ^0 w+ [$ w
在makefile 里
! y8 ~6 I1 T" ]1 [% }all:
, }# a7 a" K, z: y+ W9 h6 R @(路径/makecfg)' z1 J( q, m8 `3 ^4 [" v
4 J8 h7 N' V5 ?( ]: l输入命令make all
& x1 a( q4 D7 c8 |2 Y- z: i就会输出 i am here ! |
|