gpt4 book ai didi

c++ - 目标及其 SO 依赖项的 CMake `INSTALL`

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:04:59 27 4
gpt4 key购买 nike

我的目标链接了几个库,使用 TARGET_LINK_LIBRARIESPUBLIC 关键字,INSTALL 命令看起来像 INSTALL(TARGETS foo DESTINATION $ {CMAKE_INSTALL_PREFIX}/bin)。我想以某种方式强制 cmake 将我链接的所有(最好不包括系统库)库(仅限 SO)包含在安装过程中。我已经尝试过 EXPORT 关键字,但看起来它只影响我在我的项目中构建的库,并用与 foo 库相同的 EXPORT 标记。
这可能吗?
EDIT001:可能影响答案的附加信息。我正在使用 vcpkg管理第三方。所以 TARGET_LINK_LIBRARIES 看起来像

TARGET_LINK_LIBRARIES(foo PUBLIC
GTest::GTest
GTest::Main
${GOOGLE_MOCK}
event
${THRIFT_LIBRARIES}
${Boost_LIBRARIES}
lzo2
sqlite3
${ZeroMQ_LIBRARY}
gRPC::grpc
gRPC::grpc++
xml2
stdc++fs
bfd
-l:libisal.so.2
sgutils2
pthread
uuid
rt
)

所以,基本上我想要实现的是获取所有这些由 vcpkg 宏化的库,例如 ${THRIFT_LIBRARIES}、${Boost_LIBRARIES} 和 gRPC::grpc 等等

最佳答案

从 cmake 3.21 开始,您现在可以:

install(IMPORTED_RUNTIME_ARTIFACTS gRPC::grpc)
install(IMPORTED_RUNTIME_ARTIFACTS ${Boost_LIBRARIES})

等等

参见 new Install command .

关于c++ - 目标及其 SO 依赖项的 CMake `INSTALL`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52098134/

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