一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 3939|回复: 1

$(@:_config=)什么意思?

[复制链接]
发表于 2017-5-2 16:56 | 显示全部楼层 |阅读模式
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
! `$ }7 R( G; J/ Z" p$ }, @$ f
& C/ `+ [0 k1 `# [" }4 Y" H1.  $(@:_config=)什么意思?
& ?9 [, s$ Z  s- v5 F# Y- i网上查到如下解释
2 l% [0 P9 P% s2 W5 O3 s! j这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.5 p8 h# F$ y3 R- J$ M/ f% E% U; B4 W
这里是一样的道理:
- w% Y5 C5 f$ ~. n, U2 z' {3 G $(@:_config=) 9 G* \4 V( W9 q) r

: s) G3 Y' x8 T/ Z @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! ( ~+ t; W7 q, J

8 @& Z; E) L' j2 \6 Vsmdk2410_config : unconfig" _1 z, D" b* L
  @echo $(@:_config=) # 打印出来看看吧
# {. }& \( B$ k  @$(MKCONFIG) $(@:_config=) ARM arm920t smdk2410 NULL s3c24x0
! v; B  [  s. S但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “$ V* d% P( J/ R" A3 j  S
all:# }% ?: i' q: ^9 q5 T
   @echo $@   输出是all8 x1 M% L& q4 V8 C% B
   @echo @    输出是@
. J* R( R8 V: p$ U   @echo $(@) 输出是all
+ _+ ?+ j* I5 f; a所以我认为符号@在$()中和$@是一样的
! ]3 M4 b- v) e2 ?' d/ t$ T( y9 ^2. 目标 :依赖8 O7 D  x1 L, r* f8 C4 p/ l9 A; @+ d4 H
        命令
: V( x. N* J8 V' Y" |$ Y  命令是否可以直接是一个文件名?
4 f! H; C" w% @# V0 ]. j做了个测试证明可以:$ [$ L/ M# i. u8 p% y) u
在外面建立一个makecfg  里面输入 echo i am here !
: e# u/ S( {1 P  \0 R3 O在makefile 里( Y# O6 K) k4 O6 a5 Y, g! a
all:' L& ]: S4 m+ m& ]% B
    @(路径/makecfg)$ c, \' U! C  D5 {6 n- |- X

8 b9 f. R: o0 T/ D" I$ E  _* i- a输入命令make all
: R8 i/ @( G- |1 ]! X就会输出 i am here !
 楼主| 发表于 2017-5-2 17:10 | 显示全部楼层
越看越发现makefile功能实在强大,配合shell 一起用所向无敌
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-20 08:59 , Processed in 0.028299 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表