一乐电子

一乐电子百科

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

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2533|回复: 1
收起左侧

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

[复制链接]
发表于 2017-5-2 16:56 | 显示全部楼层 |阅读模式
已经编译出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 !
 楼主| 发表于 2017-5-2 17:10 | 显示全部楼层
越看越发现makefile功能实在强大,配合shell 一起用所向无敌

本版积分规则

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

GMT+8, 2024-4-25 11:59 , Processed in 0.047978 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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