一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 4321|回复: 1

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

[复制链接]
发表于 2017-5-2 16:56 | 显示全部楼层 |阅读模式
已经编译出bin文件了,现在研究一下makefile,把遇到的问题记录下来:
* t4 C( S  w5 D# k
, ^' D% |, ]- L1.  $(@:_config=)什么意思?
" c) }; a% ?+ b7 ^4 x. r, l网上查到如下解释* D& Q+ I% ]: n
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.3 l8 |: _6 B" M0 v" h) |9 L, \% M
这里是一样的道理:$ q& V% D1 x' m- B) }
$(@:_config=)
+ e0 v. R" W5 N% [
# M7 d' g) p9 A- o @代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了! 0 ~$ G0 ^* a4 _3 c

7 p6 ^, \. t1 |smdk2410_config : unconfig, L# c' V$ M# I  @8 P, n
  @echo $(@:_config=) # 打印出来看看吧+ ^# ]- a1 ^- J0 v
  @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0 . j) x0 k: T5 @/ q$ n
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “
' ?  M& P  }# g- U  W! z8 n3 C3 hall:
' h$ d0 w- w: s9 r   @echo $@   输出是all
2 U- S$ y, k0 s  V6 W   @echo @    输出是@" |& j- Z2 r/ K# d) _6 B/ \5 T
   @echo $(@) 输出是all" B0 w1 J5 Q: N# P% G( a9 G
所以我认为符号@在$()中和$@是一样的. x) r. s- _9 n7 t
2. 目标 :依赖! n' x! Q9 ^' Z9 G
        命令) K: m% Q8 K  |7 ~
  命令是否可以直接是一个文件名?
0 a9 u- H) L. q9 a9 R" m% X9 T( ?做了个测试证明可以:3 `3 @7 ]& o3 e$ w
在外面建立一个makecfg  里面输入 echo i am here !* Q5 s) I; z8 ^
在makefile 里7 D4 n6 _: K7 L% l* f
all:4 }& O5 B- K: Q9 T) F0 M- I
    @(路径/makecfg)6 Y% F, R' C8 y. ]5 \

, ]  X1 U( E3 U7 s输入命令make all
2 D. Q% ?) r$ `& c$ \! |0 d2 B就会输出 i am here !
 楼主| 发表于 2017-5-2 17:10 | 显示全部楼层
越看越发现makefile功能实在强大,配合shell 一起用所向无敌
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-2-25 13:15 , Processed in 0.030863 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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