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

时间:2013-09-06 17:32:42

标签: qt qmake

我想在使用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_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 个答案:

答案 0 :(得分:4)

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

解决方案依赖于发电机。

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

QMAKE_LIBFLAGS += /VERBOSE

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

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

QMAKE_AR += -v

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