【问题标题】:How to tell qmake to use static libraries if both dynamic and static versions exist?如果同时存在动态和静态版本,如何告诉 qmake 使用静态库?
【发布时间】:2012-04-15 18:21:20
【问题描述】:

我在/usr/local/lib 中安装了Boost 的静态和动态版本,即libboost_system.dyliblibboost_system.a 都存在。

在我的 qmake 项目文件中,我已将 Boost 库添加到链接器中,如下所示:LIBS += -lboost_system

我可以告诉 qmake 更喜欢静态版本而不明确说明文件名,这样我就可以减少 qmake 代码的数量以在所有平台上获得静态链接?

【问题讨论】:

标签: c++ linker qmake


【解决方案1】:

我没有使用qmake,但是有一种方法可以通过将-static 标志添加到链接器来使gcc 链接到静态库。您要静态链接的所有库都应放在此标志之后。

我搜索了qmake的文档,发现可以通过更改变量QMAKE_LFLAGS来修改链接标志,也可以直接将此标志添加到LIBS

【讨论】:

【解决方案2】:

这似乎是不可能的,并且指定库的绝对路径是一个更好的解决方案(即默认情况下 CMake 是如何做到的)。

【讨论】:

  • 但这并不能很好地处理静态依赖关系。例如,Boost 可能依赖于 zlib,但它不会自动引入。这对 mingw 来说尤其是个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
相关资源
最近更新 更多