【发布时间】:2011-03-09 08:52:37
【问题描述】:
我从事一个使用 Unity 构建的大型 C++ 项目。对于不熟悉这种做法的人,Unity 将#include 多个相关的 C++ 实现文件构建到一个大型翻译单元中,然后将其编译为一个。这可以节省重新编译头文件,减少链接时间,通过将更多功能引入内部链接来提高可执行文件大小/性能等。通常是好东西。
但是,我刚刚在我们的一个构建中发现了一个潜在的错误。一个实现文件使用了库,但不包含相关的头文件,但它已编译并运行。在摸了摸头之后,我意识到它被包含在我们的统一构建中包含在此之前的实现文件中。这里没有造成任何伤害,但如果有人稍后尝试独立重用该文件,那可能会令人困惑。
除了定期构建非 Unity 版本之外,还有什么方法可以捕获这些无声的依赖关系并仍然保留 Unity 构建的好处?
【问题讨论】:
标签: c++ build dependencies