Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为.props文件中声明的非本机VC编译器(GCC)实现MSBUILD文件跟踪功能(Tracker.exe)?_C++_Gcc_Msbuild_Tracking - Fatal编程技术网

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

C++ 如何为.props文件中声明的非本机VC编译器(GCC)实现MSBUILD文件跟踪功能(Tracker.exe)?,c++,gcc,msbuild,tracking,C++,Gcc,Msbuild,Tracking,在互联网上搜索了几个小时后,我找不到任何有关这方面的信息或文件。有人知道有没有办法做到这一点吗 如果能得到正确方向的提示就太好了 提前感谢, Alex您必须编写使用文件跟踪进行增量构建的任务。 .NET API似乎位于以下位置: 如果我是你,我会尝试反汇编Microsoft.Build.CPPTasks.Common.dll程序集类Microsoft.Build.CPPTasks.TrackedVCToolTask来了解它的工作原理 下面是我的即兴想法,它是如何工作的: 我认为Tracer.ex

在互联网上搜索了几个小时后,我找不到任何有关这方面的信息或文件。有人知道有没有办法做到这一点吗

如果能得到正确方向的提示就太好了

提前感谢,


Alex

您必须编写使用文件跟踪进行增量构建的任务。 .NET API似乎位于以下位置:

如果我是你,我会尝试反汇编Microsoft.Build.CPPTasks.Common.dll程序集类Microsoft.Build.CPPTasks.TrackedVCToolTask来了解它的工作原理

下面是我的即兴想法,它是如何工作的:

  • 我认为Tracer.exe启动子进程(您的工具作为挂起进程)
  • 然后它修补kernel32.dll文件winapi以跟踪所有读写操作(所以我认为他们修补了CreateFile和CloseHandle)
  • 然后继续这个过程
  • 进程完成后,您应该获得子进程使用的文件列表
  • 将用于生成输出文件的输入文件的文件列表写入日志文件
  • 第二次调用您的任务时,您可以在构建中进行优化。因为您现在有了文件映射,所以您应该能够决定是为给定的输出调用工具,还是跳过它。如果输出文件时间戳比所有输入文件都要新,并且编译设置没有更改(项目文件时间戳或更复杂的设置),则可以跳过它