gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:05:48 28 4
gpt4 key购买 nike

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

在我的代码中,我创建了三个库,例如ABC。在库 B 中,我正在链接库 A,因此类似于 target_link_libraries(... A)

我的 C 库正在链接 B。所以我有:B -> AC -> B

那么我是否可以在 C 中使用库 A 中定义的方法、枚举?虽然 C 没有明确链接 A?我在 C 中使用库 A 中定义的枚举,A::someClass::someEnum 并编译并显示正确的值条目。

最佳答案

Should it then be possible, that I use methods, enums whatever defined in library A also in C?

您的 C 库是否使用这些方法/枚举/等。通过包含来自库 A 或库 B 的 header

如果 C 直接包含来自库 A 的 header ,那么它应该显式与库 A 链接:

# A is a private linkage of B.
target_link_libraries(B PRIVATE A)
# C needs to be linked with A
target_link_libraries(C B A)

如果 C 包含库 B 中的 header ,而库 B 又包含库 A 中的 header ,则 A 库应该是 B 接口(interface)的一部分:

# B links with A and this linkage is an interface of B
target_link_libraries(B PUBLIC A)
# C may link with B only
target_link_libraries(C B)

这些方法假设使用“现代”(目标导向)CMake。但使用这些方法将获得最具可扩展性的解决方案。

关于c++ - C++中的库链接,三个库之间的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60742485/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com