编译器如何知道何时不需要重新编译代码的某些部分,特别是在大型项目中?编译器如何知道何时不重新编译?
例如,假设在C++中我们有两个C++文件和两个头文件。头文件相互依赖。 (它们使用在其他文件中指定的类)。
编译器是否总是需要解析头文件(也可能是用于方法实现的C++文件)以获取类信息以生成两个C++文件?
我一直以为,当你在命令提示符下运行编译器,其输出的目标文件后立即关闭 - 所以这将是不可能的缓存抽象语法树或中间代码。大多数C++编译器是否知道某个文件何时不需要输出到目标文件,因此会被跳过?
这通常是构建系统的工作(例如,做),而不是编译器的。 –
这是例如使与生成文件 – hamon
的帮助下通常它是做了检查提出的,这是相当复杂的,告诉哪些文件依赖于哪些其他文件... – xanatos