是否存在MSVC的pragma语句,导致编译器始终重建文件 - 如果它认为它刚刚构建了?
答案 0 :(得分:3)
这是我用来实现这个目的的技巧:
1)添加类似
的post build步骤命令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决定跳过构建项目,则跳过post构建)。
答案 1 :(得分:0)
我怀疑是否存在,而且我非常确定不会存在(除非工具链发生重大变化)。
原因很简单:当make
(或等效)决定构建什么时,它不会查看所涉及的文件的内容 - - 它只是将目标文件的时间戳与源文件上的时间戳进行比较。如果目标文件比其源文件更新,则永远不会为该文件调用编译器,因此编译器永远不会看到该文件的内容(包括理论上的#pragma
)。