2016-12-16 15 views
1

Когда нужно связывать статически все доступные библиотеки, используя g ++, , этот человек передает -статический флаг компилятору.Как заставить библиотеки связывать статически в qt-создателе

Но как это сделать от Qt Creator?

Во-первых, я попробовал этот совет: How to make Qt and Qtcreator link the libraries statically instead of dynamic?

Пост предполагает использовать

CONFIG += static 

Но это просто не работает.

Во-вторых, я попробовал другой подход и добавил следующую строку в мой файл .pro:

QMAKE_CXXFLAGS += -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 я получаю нераспознанный параметр/статический – jjxtra