如何在Qt Creator中强制链接静态库

3
当使用g++链接所有可用的库时,只需将-static标志传递给编译器即可。
但是在Qt Creator中如何实现呢?
首先,我尝试了以下建议: 如何使Qt和Qt Creator静态链接库而不是动态链接库? 该帖子建议使用
CONFIG += static

但这并不起作用。

其次,我尝试了另一种方法,将以下行添加到我的 .pro 文件中:

QMAKE_CXXFLAGS += -static 

这也没有解决问题。我分析了编译器的输出并发现:

只有在将源代码编译为目标文件时,才会添加-static标志。但是在构建可执行文件时,此标志是不存在的。

这是我从编译器输出选项卡复制下来的确切编译器命令:

g++ -c -pipe -fno-keep-inline-dllexport -static -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -I..\..\..\ASSETS\PROG_CPP\MY_CPP\2016\test -I. -I..\..\..\icu\dist\include -I..\..\5.7\mingw53_32\mkspecs\win32-g++  -o debug\main.o ..\..\..\ASSETS\PROG_CPP\MY_CPP\2016\test\main.cpp
g++ -Wl,-subsystem,console -mthreads -o debug\test.exe debug/main.o  -LC:\icu\dist\lib -lsicuio -lsicuin -lsiculx -lsicule -lsicuuc C:\icu\dist\lib\sicudt.a -lpthread -lm

如何强制Qmake将-static添加到所有命令中?
1个回答

7
解决方案非常明显,我后来发现了。Qmake中有一个特殊的变量负责链接器标志:QMAKE_LFLAGS。所以我只需要在.pro文件中添加以下内容即可:
QMAKE_LFLAGS += -static

2
在我的情况下并不是很有用,但这个:unix: LIBS += -Wl,-Bstatic -l<name> -Wl,-Bdynamic 是可以的。 - dyomas
1
在Windows上,我得到了未识别的选项 /static。 - jjxtra
在MacOS上它不能工作,因为其他系统库无法静态链接。 - Rui F Ribeiro
同样不适用于基于CMake的项目。 - Oscar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接