加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 从MSVC输出生成Makefile依赖项

发布时间:2020-12-16 06:52:03 所属栏目:百科 来源:网络整理
导读:使用GCC编译C/C++源时,可以使用标志-MMD -MT $@ -MF $(basename $@)在Makefile规则表单中创建其他依赖关系信息.我使我的Makefile脚本与GCC和MSVC工具链兼容,但我仍然在MSVC上生成依赖文件. 有一个标志/ showIncludes 输出源文件包括stdout中的信息,格式如下
使用GCC编译C/C++源时,可以使用标志-MMD -MT $@ -MF $(basename $@)在Makefile规则表单中创建其他依赖关系信息.我使我的Makefile脚本与GCC和MSVC工具链兼容,但我仍然在MSVC上生成依赖文件.
有一个标志/ showIncludes
输出源文件包括stdout中的信息,格式如下:注意:包括file:filename.尝试解析它(到目前为止成功)我得到以下makefile函数:

msvc-dep-gen =  echo $@: $< |
    sed -e "s/^.*$$/&/" >$(basename $@).d && 
    $(1) /showIncludes |
    sed -e "/^Note: including file:/!d"
        -e "s/^Note: including file:s*(.*)$$/1/"
        -e "s////g"
        -e "s/ / /g"
        -e "s/^(.*)$$/t1 /" >> $(basename $@).d

其中参数$(1)是使用MSVC编译给定源文件的包装命令.这会生成依赖文件,但输出会被过滤掉,所以我会丢失所有警告和编译器产生的错误.关于如何防止这种情况的任何聪明的想法?

解决方法

如果你把它放在顶部带有set -e的shell脚本中,那么失败将导致退出非零代码,而Make会看到它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读