我想在使用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版本无关紧要。
答案 0 :(得分:4)
在staticlib
项目中,LFLAGS
未传递给链接器。实际上,没有记录的方法来传递这样的标志。
解决方案依赖于发电机。
对于msvc_nmake
,LIBFLAGS
将传递给链接器。要获得详细输出,您可以添加
QMAKE_LIBFLAGS += /VERBOSE
要验证它是否有效,可以在任何系统上调用qmake -spec win32-msvc2008
;特定的msvc版本并不重要。
对于unixmake
,AR
用于调用链接器,因此您必须将标志添加到QMAKE_AR
。要获得详细输出,您可以添加
QMAKE_AR += -v
要验证,请调用qmake -spec macx-llvm
;任何其他unix规范也应该有效。