Fed*_*890 2 c++ qmake static-libraries qt-creator static-linking
当您想使用 g++ 静态链接所有可用库时,此人会将-static标志传递给编译器。
但是如何从 Qt Creator 做到这一点呢?
首先,我尝试了这个建议: 如何使 Qt 和 Qtcreator 静态而不是动态链接库?
该帖子建议使用
CONFIG += static
Run Code Online (Sandbox Code Playgroud)
但这根本行不通。
其次,我尝试了另一种方法并将以下行添加到我的 .pro 文件中:
QMAKE_CXXFLAGS += -static
Run Code Online (Sandbox Code Playgroud)
那也没有解决问题。我分析了编译器输出并发现:
-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
Run Code Online (Sandbox Code Playgroud)
如何强制 Qmake 将 -static 添加到所有命令?
正如我后来发现的那样,解决方案非常明显。Qmake 中有一个特殊变量负责链接器标志:QMAKE_LFLAGS。所以我所要做的就是将以下内容添加到 .pro 文件中:
QMAKE_LFLAGS += -static
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5980 次 |
| 最近记录: |