对于某人来说,这可能是一个奇怪/初学者的问题。但是我有以下情况。
在我的代码中,我正在创建三个库,可以说A,B和C。在库B中,我正在链接库A,因此类似target_link_libraries(... A)
。
我的C库正在与B链接。因此,我有:B -> A
C -> B
。
那么我是否有可能使用方法枚举库A和C中定义的内容?虽然C没有显式链接A?我使用的是库A中C中定义的枚举A::someClass::someEnum
,它已编译并显示正确的值条目。
记住链接依赖和编译依赖不是同一件事。
[库C的源很可能使用来自与库A相关的标头的定义...,而与C在链接时是否依赖于A无关。
现在,在CMake中,我们不仅将target_link_libraries()
用于链接。此CMake命令确保库的标头可用于从属目标进行编译,并且其库可用于链接。
库C也可能需要库A进行链接-具有库A中的函数或变量的定义。从理论上讲,库可以具有循环链接依赖项(这意味着您需要针对整个圆,或者不完整)。