【发布时间】:2013-12-09 15:12:29
【问题描述】:
我在一个团队工作,我们的测试桶有数百个 .c 源程序。 .c 程序相当小,它们都包含相同的 10 个 .h 头文件。这些 .h 文件相当大。
每次我们获得一个新的库文件来链接我们的测试程序以进行测试时,我们都会运行一个脚本来重新编译并运行我们的测试桶。问题是编译需要相当长的时间,特别是如果环境是虚拟的。
有没有办法编译 .h 头文件一次,放入一个单独的目标文件并让那些许多 .c 源文件链接到所述目标文件?我认为这将加快编译时间。我愿意更改/删除 .c 源程序中的所有#include。
非常感谢任何关于加快编译时间的建议。
另外,我应该说一个脚本执行一个makefile PER .c 源测试程序!不告诉 makefile 编译当前目录中的所有程序。每个测试程序都被编译成自己的可执行文件。
【问题讨论】:
-
头文件未编译。它们被#include 到 .c 文件中,然后编译。在大多数情况下,头文件只包含允许 .c 文件引用函数、结构、数据类型等的声明,而无需在该 .c 文件中定义它们。
-
@master_latch 不幸的是,创建头文件的程序员实际上编写了数千行实现代码。他们没有将其用于声明目的。 .h 文件中的代码是所有 .c 文件测试程序中使用的共享代码......所以,听起来“预编译头文件”可能是一个解决方案。或者可能创建一个包含 .h 头文件的虚拟 .c 文件并从中创建一个对象,然后所有 .c 文件都链接到该文件?
-
哦,我明白了。我没有意识到预编译的头文件是一回事——但现在我想到了,我记得在 MSVS 中将它视为一个选项。很高兴有人能够回答您的问题!
标签: c gcc hyperlink header compilation