首页 文章

将静态库与qmake链接时如何提供链接器选项?

提问于
浏览
6

我想在使用qmake构建 static library 时为链接器提供选项 . 假设我在使用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_LIB 也不设置 LIBS 对链接器有任何影响 . 这些变量中没有设置甚至使它成为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版本无关紧要 .

1 回答

  • 4

    staticlib 项目中, LFLAGS 未传递给链接器 . 实际上,没有记录的方法来传递这样的标志 .

    该解决方案依赖于发电机 .

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

    QMAKE_LIBFLAGS += /VERBOSE
    

    要验证它是否有效,可以在任何系统上调用 qmake -spec win32-msvc2008 ;特定的msvc版本并不重要 .

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

    QMAKE_AR += -v
    

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

相关问题