• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

Makefile文件中遇到没见过的隐式规则

游~游~游 2018-09-09 浏览量:775

Snipaste_2018-09-09_10-49-07.png\


这里Makefile中间中 @$ 是啥?

@$(MKCONFIG) $(@:_config=) 是啥呢?

韦东山视频愣是没看懂。。​

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 一些常见的自动化变量说明如下:
    (1) $@ ——目标文件的名称;
    (2) $^ ——所有的依赖文件,以空格分开,不包含重复的依赖文件;
    (3) $< ——第一个依赖文件的名称。
    示例:
    main:main.c sort.o
    gcc main.c sort.o -o main
    表示为简洁的就是:
    main:main.c sort.o
    gcc $^ -o $@
    • 发布于 2018-10-08
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 比如,@代表的是target smdk2410_config 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410;
    • 发布于2018-09-09
    • 举报
    • 评论 1
    • 0
    • 0
游~游~游 回复了 FEItwo :$(MKCONFIG) 不是Makefile自定义的变量么。在它前面加@表示目标,这么操作为嘛?应该可以不用@的,为嘛??? 回复

  • @s:@是silent,s()是变量

    第二个是在执行makeconf xxxxxx_config 时候,变成执行 makecinfig xxxxxx

    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这不是隐含规则,是正常的makefile写法
    • 发布于2018-09-10
    • 举报
    • 评论 2
    • 0
    • 0
游~游~游 回复了 robe_zhang :显示规则!? 回复
robe_zhang 回复了 游~游~游 :正常 makefile 用法,隐含规则,你看不到的 回复

  • 这是makefile的语法 用$替代@的指定字段
    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个符串通常用在“规则”行中,表示不显示命令本身,而只显示它的结果,例如Makefile中的内容为:

    1. DIR_OBJ=./obj
    2. CMD_MKOBJDIR=if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir ${DIR_OBJ}; fi
    3. mkobjdir:
    4. @${CMD_MKOBJDIR}
    命令行执行如下:
    make mkobjdir
    此时不会显示在命令行不会显示出if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir ${DIR_OBJ}; fi,但如果规则行的TAB后没有以@开头,则会显示,不信可以试试。
    • 发布于2018-09-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个表示一个指定段代码进行替代操作
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

Makefile文件中遇到没见过的隐式规则