gpt4 book ai didi

c++ - CMake TARGET_LINK_LIBRARIES 中包含多个静态库

转载 作者:太空狗 更新时间:2023-10-29 20:39:34 24 4
gpt4 key购买 nike

我有一个 CMake 多重定义链接问题,可执行文件依赖于包含静态库的共享库。

我创建了一个依赖于静态库 bar 的共享库 foo

add_library(foo SHARED foo.cpp)
target_link_libraries(foo bar)

根据定义,bar 的内容在库 foo 中。

然后我创建一个依赖于 foo 的可执行文件 exe

add_executable(exe exe.cpp)
target_link_libraries(exe foo)

在链接时,我有一个多重定义 警告/错误告诉我库bar 中的函数出现了两次。查看链接命令时,我看到 exe 链接到 barfoo,这是不一致的。

我是否遗漏了依赖项声明中的某些内容?我是否错过了神奇的 CMake 关键字?

最佳答案

像这样:

add_library(foo SHARED <foo source files>)
target_link_libraries(foo PRIVATE bar)

如果其他库链接到 foo,请确保使用 CMake keyword PRIVATEPUBLICINTERFACE

关于c++ - CMake TARGET_LINK_LIBRARIES 中包含多个静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27490416/

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