gpt4 book ai didi

c++ - 从 MSVC 输出生成 Makefile 依赖项

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:53 25 4
gpt4 key购买 nike

在使用 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/^\(.*\)$$/\t\1 \\/" >> $(basename $@).d

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

最佳答案

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

关于c++ - 从 MSVC 输出生成 Makefile 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com