c++ - 如何为 .props 文件中声明的非 native VC 编译器 (GCC) 实现 MSBUILD 文件跟踪功能 (Tracker.exe)?

标签 c++ gcc msbuild tracking

在互联网上搜索了几个小时后,我找不到任何关于此的信息或文档。有谁知道是否有办法完成这项工作?

获得正确方向的提示会很棒。

提前致谢

亚历克斯

最佳答案

您必须编写将使用文件跟踪进行增量构建的任务。 .NET API 似乎在这里:FileTracker Class

如果我是你,我会尝试反汇编 Microsoft.Build.CPPTasks.Common.dll 程序集 - Microsoft.Build.CPPTasks.TrackedVCToolTask​​ 类以了解其工作原理。

下面是我的即兴想法:

  1. 我认为 Tracer.exe 启动子进程(您的工具作为暂停进程)。
  2. 然后它修补了 kernel32.dll 文件 winapi 以跟踪所有读写操作(所以我认为他们修补了 CreateFile 和 CloseHandle)。
  3. 然后恢复进程
  4. 进程完成后,您应该得到子进程使用的文件列表。
  5. 将用于生成输出文件的输入文件的文件列表写入日志文件。
  6. 第二次调用您的任务,您可以在构建中进行优化。因为您现在有了文件映射,所以您应该能够决定是为给定的输出调用您的工具还是跳过它。您可以跳过它,以防输出文件时间戳比所有输入文件更新并且编译设置没有更改(项目文件时间戳 - 或更复杂的东西)。

File Tracking

关于c++ - 如何为 .props 文件中声明的非 native VC 编译器 (GCC) 实现 MSBUILD 文件跟踪功能 (Tracker.exe)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960893/

相关文章:

c++ - 如何处理 c 和 c++ 源代码以计算静态代码分析的指标?

c++ - 在 C++ 中使用 float,double 打印小数

c - 如何使用堆栈帧访问函数的第一个参数?

c++ - 是否可以在测试后检查代码覆盖率是否增加

MSBuild 不部署并且不打印任何错误

c++ - 声明 protected 功能 friend

C++ 业务规则表达式解析器/评估

python - 从 python 调用静态链接的 C 库在 Windows 上永远挂起,但在 OSX 或 Linux 上则不然

sdk - MSBuild 找不到 resgen.exe

.net - MSbuild.exe 可以用于 VB6 代码吗?