linux中makefile里的$(@:_config=)的解释

研究makefile中遇到$(@:_config=),上网查询,看到的很好的博客,转载一波

原文地址:http://blog.sina.com.cn/s/blog_89fa41ef0100t6bj.html



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

网上查到如下解释
这里使用了Makefile中的替换引用规则,类似常看到的例子 obj=$(srcfiles:%.c=%.o): 由.c得到对应的.o文件.
这里是一样的道理:
$(@:_config=)

@代表的是target smdk2410_config, 那么$(@:_config=)就是将smdk2410_config中的_config替换为空!得到smdk2410; 你可以用echo自己打印出来看看就明白了!

smdk2410_config : unconfig
@echo $(@:_config=) # 打印出来看看吧
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
但有一点不明白@代表目标吗?印象里好像是$@ 才代表目标,做了个测试 “
all:
@echo $@ 输出是all
@echo @ 输出是@
@echo $(@) 输出是all
所以我认为符号@在$()中和$@是一样的
2. 目标 :依赖
命令
命令是否可以直接是一个文件名?
做了个测试证明可以:
在外面建立一个makecfg 里面输入 echo i am here !
在makefile 里
all:
@(路径/makecfg)

输入命令make all
就会输出 i am here !




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下步骤在imx6ull平台上使用gcov: 1. 确保您的代码能够正确地与gcov库链接 在Makefile文件,您需要添加编译选项“-fprofile-arcs -ftest-coverage”,以启用gcov代码覆盖率分析和计数。如果您的代码使用了一些库(例如标准C库),您需要确保这些库也能够正确地与gcov库链接。 2. 设置环境变量 在imx6ull平台上设置环境变量,以确保gcov能够正确地读取覆盖率数据。您可以在终端运行以下命令: ``` export GCOV_PREFIX=/path/to/coverage/data/ export GCOV_PREFIX_STRIP=0 ``` 其,/path/to/coverage/data/是您要存储覆盖率数据的路径。 3. 编译并运行测试用例 使用交叉编译工具链编译您的代码,并将可执行文件复制到imx6ull平台上运行。运行测试用例后,gcov会生成一些.gcda文件,这些文件包含了覆盖率数据。 4. 生成覆盖率报告 使用gcov工具来生成可读的报告。例如,运行“gcov your_source_file.c”将生成一个包含有关每个代码块执行次数的报告。您可以使用vim或其他文本编辑器打开报告文件进行查看。 ``` gcov your_source_file.c ``` 5. 分析报告 通过分析报告,您可以看到哪些代码块被执行,哪些未被执行,并确定测试用例的覆盖率。这样您就能够更好地了解您的代码在哪些方面需要改进。 需要注意的是,如果您的代码包含一些特殊的硬件相关操作,例如访问外设寄存器或执行DMA传输,这些操作可能会导致gcov无法正确地计数覆盖率。在这种情况下,您需要使用其他工具进行代码分析和覆盖率分析。 希望这些步骤可以帮助您在imx6ull平台上使用gcov进行代码覆盖率分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值