dynamic - 如何使用 CMake 混合链接静态库和共享库
问题描述
我有一个基于 Linux 的共享库 libtest.so。它链接到几个共享库。现在我有一些第三方静态库可以链接到 libtest.so。我知道这可以通过直接调用 gcc 来实现:
我的问题是如何用 CMake 做同样的事情?
解决方案
我没有看到问题。使用您的静态库,您可以执行以下操作:
target_link_libraries(my_target_or_executable /home/me/somedir/mymagiclib.a)
或者
target_link_libraries(my_target_or_executable -L/home/me/somedir/)
target_link_libraries(my_target_or_executable mymagiclib.a)
昨天我什至以这种方式链接到共享库。因为我在来自多个来源的 gcc 的地址清理程序库中存在冲突。
但是请注意与正常方式链接到库的区别。对于你的libtest.a
,你这样做:
target_link_libraries(my_target_or_executable -ltest)
请注意,您在此处删除了lib
前缀。但是当您想手动指定库时不要这样做。
推荐阅读
- node.js - 如何正确地将 Google Analytics API 结果从服务器发送到客户端?
- java - Spring-Kafka:反序列化 kafka 消息时出现问题 - 类不在“受信任的包”中?
- laravel - Javascript 代码不适用于 vuejs 集成
- c# - Blazor onclick 事件从循环传入计数器
- unity3d - 如何在 Vuforia 中为不同的 ImageTargets 正确添加事件?
- c# - 如果提供的类型具有可用的隐式转换,为什么我们不能转换为泛型类型?
- assembly - 装配中大量斐波那契的问题
- sql - postgres - 在 CASE 子句中使用 SIMILAR TO
- animation - 有状态和无状态 Flutter UI 的混合未更新
- c++11 - 多个具有相同名称的标准标头 - 包含哪一个以及如何更改它?