7

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

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

这就是整个项目文件。它应该导致一个空的静态库,其中没有对象。

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

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

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

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

4

1 回答 1

6

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 规范也应该可以工作。

于 2013-09-06T17:34:35.490 回答