我们有一个非常大的代码库(超过3K的翻译单元),尽管它被细分为小库,但私有头文件和公共头文件之间没有区别。
我们使用CMake作为构建系统,并且我们是在Linux上构建的,所以我的理解是,默认情况下,每个符号都是导出的,当链接器必须选择要链接的符号时,它必须在所有符号中进行选择,甚至是那些不是库公共接口的一部分的符号。
如果我们将每个库的头文件区分为private和public,并且在表示库之间的依赖关系时大量使用CMake PUBLIC
和CMake PRIVATE
依赖类型,那么在链接时间方面会有什么好处吗?还是仍然是链接器只能看到所有内容,必须执行完整搜索的情况?
1条答案
按热度按时间nkkqxpd91#
......在连接时间方面会有什么好处吗?
不,这是另一回事。你可以做很多事情来减少构建时间。首先,我想到了:
PUBLIC
/PRIVATE
依赖项,以确保仅将必要的库列为依赖项ccache
......这是首先要做的事情。