从 MSVC 输出生成 Makefile 依赖项

2024-01-04

使用 GCC 编译 C/C++ 源代码时,可以使用标志以 Makefile 规则形式创建附加依赖信息-MMD -MT $@ -MF $(basename $@).d。我使 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 编译给定源文件的包装命令。这会很好地生成依赖文件,但输出会被过滤掉,因此我会丢失编译器产生的所有警告和错误退出。关于如何防止这种情况有什么聪明的想法吗?


如果您将其放入 shell 脚本中set -e在顶部,那么失败将导致以非零代码退出,并且 Make 会看到它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 MSVC 输出生成 Makefile 依赖项 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 使用 MySQL 查询结果填充下拉列表 (PHP/MySQL)

    正如标题所说 这是我目前编写的代码 认为它会起作用 但它不起作用 请注意 我的会话用户 ID 等正在工作 因为我可以将其打印在表单的另一个字段中 所以这不是问题 但我的保管箱中似乎没有任何内容 我已经在数据库上创建了与我登录的 user i
  • 如何实现一个程序来查找二维平面中的最短路径?

    如果在二维平面上没有 所有可能的二维形状 圆形 四边形 三角形 不规则形状 的障碍物 那么如何实现一种机制来找到障碍物周围的最短路径 我正在考虑使用 Visual C 因为它提供了许多图形类来绘制此类图形 我已经走了很远 1 首先我将使用
  • 如何在 Visual Studio 中禁用保存/修改的标记?

    例如 VS2022 显示绿色垂直线 行号旁边 作为已保存更改的指示符 如何禁用 隐藏这些标记 转到工具 选项 文本编辑器 常规并取消选中 跟踪更改 这应该禁用行号附近以及滚动栏中的绿线 已保存的更改 和黄线 未保存的更改
  • 无法评估 Blazor Webassemble API 调用子项

    我正在尝试使用新的 Blazor Webassemble 应用程序调用现有的 REST API 但是当我进行调用时 我总是收到错误无法对儿童进行评估 API 到达断点 当我单步执行时 它成功返回数据 如果我在邮递员中调用它 我也可以看到该数
  • 自定义 MPAndroidChart 中的图例

    我正在从事需要实施图表的项目中的项目 我决定使用MPAndroid图表 https github com PhilJay MPAndroidChart它工作得很好 但我需要做一些事情才能对我来说完美 First我可以将条形图更改为特定图像吗
  • Eclipse 不生成谷歌云端点客户端库

    我正在尝试创建我的第一个 GAE 端点应用程序 我想创建自己的个性化端点 而不是从类生成端点 这可能吗 我写过这个类 Api name my endpoint path my endpoint public class MyFirstEnd
  • 如何使用应用程序外部提供的新 Android M 功能“文本选择”?

    背景 Android M 提供了一种处理选定文本的新方法 链接here http developer android com intl ru about versions marshmallow android 6 0 changes ht
  • Fullcalendar:可拖动对象拒绝将 fullcalendar 视为可放置,即使 fullcalendar 接受放置

    我已经将 FullCalendar 设置为接受 drop 确实如此 但是我用 revert invalid 构造的可拖动对象似乎无法将 FullCalendar 上的日期识别为可放置的 并恢复回来 这是我的代码
  • json 编码的自定义替换未按预期输出双引号

    创建自己的 json 编码器后 我意识到它正在用两个转义反斜杠而不是一个反斜杠替换双引号 我现在意识到 C 有一个内置的Json Encode 方法 是的 我已经让它工作了 但是 我对为什么下面的代码 我构建的 json 编码器 没有像我期
  • 在 Android 上以编程方式打开/关闭 GPS [重复]

    这个问题在这里已经有答案了 可能的重复 像 Tasker 一样以编程方式启用 GPS https stackoverflow com questions 4721449 enable gps programatically like tas
  • 根据风味和构建类型构建要在代码中使用的 gradle 变量

    有没有办法在我的代码中使用 build gradle 中的变量 这取决于风味和 buildType 在此示例中 是否可以在 Gradle 中声明一个可在 Java 中使用的变量 https stackoverflow com questio
  • 未返回正确的 post 方法结果

    我正在尝试使用 php my sql 在 Windows Phone 8 登录功能中创建一个应用程序 我有以下 php 脚本 在我的 Windows Phone C 点击事件中 我写了以下内容 private void btnLogin C
  • 默认作为 switch 语句中的第一个选项?

    我已经测试过了 它工作得很好 但对我来说 它看起来 很奇怪 我是否应该担心这是非标准形式 将在 PHP 的未来版本中删除 或者它可能会停止工作 我总是将默认情况作为最终情况 而不是第一种情况 switch kind default The
  • Django 在 ModelForms 中继承 formfield_callback 的问题

    我现在才使用 Django 几个星期 所以我可能会采取各种错误的方法 但是 我有一个基本的 ModelForm 我在其中放入了一些样板文件 以尽可能保持干燥 而我所有实际的 ModelForm 都只是该基本表单的子类 这非常适合error
  • 哪个工具可以对 javac 的输出进行着色?

    我们有一个高度并行的构建过程 因此我经常必须浏览 javac 的大量输出来查找构建错误 为了使这更容易 如果有一些工具可以将 javac 到我的终端的输出着色 突出显示代码中的错误 那就太好了 我可以使用什么工具对 javac 的输出进行着
  • javascript中如何从字符串中提取浮点数

    我在 textarea 中有 xml 内容 其形式可以是
  • 使用 Java 8 Stream 匹配模式并将流写入文件

    我正在尝试读取一个巨大的文件并提取 引号 中的文本 然后将这些行放入一个集合中 并使用 Java 8 将集合的内容写入文件中Stream public class DataMiner private static final Pattern
  • 如何隐藏反应导航标题下的阴影?

    How do I hide the shadow under react navigation headers They look like this 将以下内容添加到 navigationOptions 标题样式 const AppNav
  • npm run build 冻结 - 如何调试?

    我有一个 node js 应用程序 当我运行它时运行良好npm start但是当我尝试构建它时 进程冻结了 这是我所看到的 npm run build gt email protected cdn cgi l email protectio
  • 从 MSVC 输出生成 Makefile 依赖项

    使用 GCC 编译 C C 源代码时 可以使用标志以 Makefile 规则形式创建附加依赖信息 MMD MT MF basename d 我使 Makefile 脚本与 GCC 和 MSVC 工具链兼容 但我仍然在 MSVC 上生成依赖文