C ++中的库链接,三个库之间的依赖性

问题描述 投票:2回答:1

对于某人来说,这可能是一个奇怪/初学者的问题。但是我有以下情况。

在我的代码中,我正在创建三个库,可以说ABC。在库B中,我正在链接库A,因此类似target_link_libraries(... A)

我的C库正在与B链接。因此,我有:B -> AC -> B

那么我是否有可能使用方法枚举库A和C中定义的内容?虽然C没有显式链接A?我使用的是库A中C中定义的枚举A::someClass::someEnum,它已编译并显示正确的值条目。

c++ cmake dependencies circular-dependency
1个回答
0
投票

记住链接依赖和编译依赖不是同一件事。

[库C的源很可能使用来自与库A相关的标头的定义...,而与C在链接时是否依赖于A无关。

现在,在CMake中,我们不仅将target_link_libraries()用于链接。此CMake命令确保库的标头可用于从属目标进行编译,并且其库可用于链接。

库C也可能需要库A进行链接-具有库A中的函数或变量的定义。从理论上讲,库可以具有循环链接依赖项(这意味着您需要针对整个圆,或者不完整)。

© www.soinside.com 2019 - 2024. All rights reserved.