一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4208|回复: 1

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

[复制链接]
发表于 2017-5-2 16:56 | 显示全部楼层 |阅读模式
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
& t8 W/ R  a: H  I7 n8 v& @ 7 C( {+ Q" p8 l9 N4 S
1.  $(@:_config=)什么意思?% O, H8 N* L& ?* ?& ^6 L
网上查到如下解释- u+ V9 W9 n: \
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.6 Z  t8 J0 @- ?7 g
这里是一样的道理:
% W9 w* ]& i9 ], Z/ k# T7 Q $(@:_config=)
$ Z4 _/ K# B" T4 w& v# z$ E, _
, p* `, E; o* S$ {$ L, h @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! 1 e$ c( y. |/ g

% V- q& n: O% [* ?/ `9 usmdk2410_config : unconfig# E) q; G* z8 W) L
  @echo $(@:_config=) # 打印出来看看吧
) I+ v. X* m! W! {: H4 h  @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 2 Q+ J5 E& _& @- @) P# d: l. ~- U- ^9 Q
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “, L/ s: L8 z- H8 x) z5 J1 G4 Z
all:, g/ p( u* N6 o" Q' M5 h: q0 k: B
   @echo $@   输出是all
* U0 m+ q+ g# l& w, b* _   @echo @    输出是@
0 ?. O$ R/ d9 u. I; V7 o. S   @echo $(@) 输出是all. ~& r7 Y1 C: D0 J' [. @2 v
所以我认为符号@在$()中和$@是一样的
2 {7 Y4 T" u, Z% o# U2. 目标 :依赖) i8 d+ g8 a+ l( f6 W2 N& B
        命令6 v0 T  r7 E$ J; T9 Y% t
  命令是否可以直接是一个文件名?
6 ]' i! e0 T. Y/ g& M" [0 A做了个测试证明可以:  S8 ^8 P' P. D& \" y" C- V- `
在外面建立一个makecfg  里面输入 echo i am here !6 _3 ~! ], u9 t: Z# |
在makefile 里" ]: G3 G' J# e
all:
0 _1 a! c$ z9 |. v% F    @(路径/makecfg)
8 _3 i6 v( w$ c% K% n. c! C # t) {- e6 P; o1 F
输入命令make all1 L% g2 y  y' S- t+ _
就会输出 i am here !
 楼主| 发表于 2017-5-2 17:10 | 显示全部楼层
越看越发现makefile功能实在强大,配合shell 一起用所向无敌
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-12-14 06:51 , Processed in 0.026758 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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