从MSVC输出生成Makefile依赖项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从MSVC输出生成Makefile依赖项相关的知识,希望对你有一定的参考价值。
在使用GCC编译C / C ++源代码时,可以使用标志-MMD -MT $@ -MF $(basename $@).d
在Makefile规则表单中创建其他依赖项信息。我使我的Makefile脚本与GCC和MSVC工具链兼容,但我仍然在MSVC上生成依赖文件。
有一个标志/showIncludes
,输出源文件包括stdout中的信息,格式如下Note: including 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/^(.*)$$/ 1 \/" >> $(basename $@).d
其中参数$(1)是使用MSVC编译给定源文件的包装命令。这会生成依赖文件,但输出会被过滤掉,所以我会丢失所有警告和编译器产生的错误。关于如何防止这种情况的任何聪明的想法?
答案
如果你把它放在顶部有set -e
的shell脚本中,那么失败将导致退出非零代码,而Make会看到它。
以上是关于从MSVC输出生成Makefile依赖项的主要内容,如果未能解决你的问题,请参考以下文章
使用 Makefile、源代码生成器并使用 gcc 生成依赖项