【发布时间】:2022-06-16 04:33:40
【问题描述】:
我使用 clang 的 ftime-trace 来分析我的程序的编译时间。事实证明,大约 90% 的时间都花在解析 khronos 组提供的大量 vulkan.hpp 标头上。
这反过来意味着,如果我尽量减少在头文件中包含这个头文件并且只将它放在 cpp 文件中,我的编译时间应该会大大缩短。
但是我面临以下问题。
标题中有一些我几乎到处都需要的对象。有一些错误代码枚举器,一些其他类型的枚举,以及一些对象类型,例如
vk::Buffer、vk::Image 等...
这些只占总标题的一小部分,但我不能在不包含整个标题的情况下包含它们。每次我需要我的代码与图像交互时,我可以做些什么来只挑选我实际使用的类型并避免包含整个标题?
【问题讨论】:
-
也许构建一个包装器 dll 作为具有静态链接的中间层可以工作吗?也许像 debug.dll 一样作为临时解决方案直到发布?
-
也许这有助于compiler cache -> "Ccache 是一个编译器缓存。它通过缓存以前的编译并检测何时再次完成相同的编译来加速重新编译。Ccache 是免费软件,"
-
@RaymondNijland 这个工具看起来很有趣。我会调查的。
-
@huseyintugrulbuyukisik 该共享库的使用者如何知道 vulkan 对象的定义?
-
@Makogan 那么消费者需要的不仅仅是标题的几个部分吗?没有办法插入适配器类吗?
标签: c++ compilation header-files vulkan