2016-12-16 154 views
1

當需要使用g ++靜態鏈接所有可用庫時,此人將-static標誌傳遞給編譯器。如何強制庫在qt創建器中靜態鏈接

但是如何從Qt Creator中實現呢?

首先,我想這樣的建議: How to make Qt and Qtcreator link the libraries statically instead of dynamic?

的後建議使用

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添加到所有的命令?

回答

2

解決方案非常明顯,我後來才發現。 Qmake中有一個特殊變量負責鏈接器標誌:QMAKE_LFLAGS。 所以我不得不做的是添加以下的.pro文件:

QMAKE_LFLAGS += -static 
+0

這不是在我的案件有幫助的,但這樣的:'UNIX:LIBS + = -Wl,-Bstatic -l - Wl,-Bdynamic'確定 – dyomas

+0

在Windows上,我得到無法識別的選項/ static – jjxtra