3

是否有 MSVC 的编译指示语句会导致编译器始终重建文件 - 如果它认为它是刚刚构建的?

4

2 回答 2

4

这是我用来实现此目的的技巧:

1)添加类似的构建后步骤命令

echo #define __FORCE_REBUILD__ "Include this file in a cpp to invalidate it at each compilation" > $(ProjectDir)ForceRebuild.h

2) 在要强制重建的每个 cpp 中添加一个 '#include "ForceRebuild.h"'。

它仅在实际发生构建后才起作用(因为如果 Visual Studio 决定跳过构建项目,则会跳过后期构建)。

于 2013-02-14T07:28:50.910 回答
0

我怀疑有,而且我很确定不可能(除非对工具链进行重大更改)。

原因很简单:当make(或等价物)决定构建什么时,它根本不会查看所涉及文件的内容——它只是将目标文件上的时间戳与目标文件上的时间戳进行比较源文件。如果目标文件比其源文件新,则永远不会为该文件调用编译器,因此编译器将永远无法看到该文件的内容(包括理论化的#pragma)。

于 2012-07-08T13:51:45.117 回答