【问题标题】:How to provide linker options when linking a static library with qmake?使用 qmake 链接静态库时如何提供链接器选项?
【发布时间】:2013-09-06 17:32:42
【问题描述】:

我想在使用 qmake 构建 静态库 时为链接器提供选项。假设我想在使用 MSVC 构建时获得详细的链接器输出。项目文件如下:

# mylib.pro
TEMPLATE = lib
TARGET = mylib
CONFIG += staticlib
QT += core
win32-msvc*: QMAKE_LFLAGS += /VERBOSE
unix: QMAKE_LFLAGS += -v

这就是整个项目文件。它应该会产生一个空的静态库,其中没有任何对象。

既不设置QMAKE_LFLAGS 也不设置QMAKE_LFLAGS_STATIC_LIBLIBS 对链接器没有任何影响。这些变量中没有设置任何内容,甚至没有进入 Makefile。如果QMAKE_LFLAGS 有效,我希望看到/VERBOSE-v 在命令行上传递给链接器,以适合给定的平台。

使用什么makefile生成器都没有关系,这种行为似乎是一致的。感兴趣的两个平台是。

qmake -spec win32-msvc2008
qmake -spec macx-llvm

由于 qmake 的跨平台特性,您可以在碰巧安装了 Qt 的任何平台上对其进行测试。这在 Qt 4.8.4 和 5.1.1 的 qmake 上重现。 mkspec 中给出的 msvc 版本无关紧要。

【问题讨论】:

    标签: qt qmake


    【解决方案1】:

    staticlib 项目中,LFLAGS 不会传递给链接器。事实上,没有记录在案的方式来传递此类标志。

    解决方案取决于生成器。

    对于msvc_nmakeLIBFLAGS 被传递给链接器。要获得详细的输出,您可以添加

    QMAKE_LIBFLAGS += /VERBOSE
    

    要验证它是否有效,在任何系统上,您都可以调用qmake -spec win32-msvc2008;特定的 msvc 版本无关紧要。

    对于unixmakeAR 用于调用链接器,因此您必须将标志添加到QMAKE_AR。要获得详细的输出,您可以添加

    QMAKE_AR += -v
    

    要验证,请调用qmake -spec macx-llvm;任何其他 unix 规范也应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2015-02-25
      • 2011-02-24
      • 2011-01-18
      相关资源
      最近更新 更多