Tag: 依赖项

GCC和预编译头

在阅读了这篇精美的文章 (“编译头文件的关心和喂养”)之后,我对这些文章在现实生活中如何工作有些怀疑。 更具体地说,我怎么能知道我需要在以下情况下触发重新编译的头文件: 我决定在我的一个.cpp文件中定义一些东西,它改变了预处理器解释已经包含在我的预编译头文件中的一些头文件 我在其中一个.cpp文件中包含另一个头文件,它定义了一个特定的预处理器指令,用于改变预处理器解释已包含在预编译头文件中的头文件的方式 更糟糕的是,以前的问题可以recursion地发生,当某些头文件#include其他头文件 预编译的头文件的使用是否强制执行某种限制性的编码风格,如将.cpp文件中包含的头文件的数量限制为1,而不是在.cpp文件中定义文件? 虽然微软的编译器可能在预编译的头文件(通过应用一些特定于MS的巫术工具)上做了一个体面的工作,因为据我所知,它提供了应该做所有pipe道的/Yc和/Yu选项,对于GCC看起来这个function在Makefile中需要大量的手工工作和创造性,而且我无法find一个模板来解决所有使用预编译头文件的缺陷。 例如,如果我有一个build立几个库的项目,为了在每次更改之后不重build所有的库,我必须在Makefile中使用一些非常可爱的sed技巧来检测是否有一个标头#include d库被修改了(或者#include一个修改的头文件)。 我害怕甚至想到预构build头文件实际上意味着为了使构build脚本在每次必要时重build它们的复杂性。