2010-02-19 32 views
9

我有一個共享庫(沒有QT依賴)[庫B],鏈接到另一個共享庫(也沒有QT依賴)[庫一個]。在Linux上建立與qmake - 如何防止qmake鏈接到QtCore和QtGui

我正在使用Qmake和QT Creator 1.3。問題在於,當我構建庫B並在可執行文件上運行ldd時,它將鏈接到QtCore和QtGui,這兩個文件都牽扯到大量不需要的文件,導致可執行文件需要很長時間才能加載,並且具有不需要的依賴。

我已經試過剛纔的一切,與鏈接這些庫庫B.停止QMAKE

爲文庫B我的項目文件的片段如下:

TEMPLATE = lib 
LIBS += -L../datelib/bin -ldatelib_release 

QT -= gui core 
LIBS -= -lQtGui -lQtCore 
CONFIG += dll 
CONFIG += debug_and_release 

CONFIG(debug, debug|release) { 
TARGET =targetnameD 
}else { 
TARGET = targetname 
} 

我使用QtCreator 3在Ubuntu 9.10

QT是版本4.5.2

+0

Qt的哪個版本?我試着用4.6.1和Qt - = core gui,由qmake創建的Makefile不包含Qt DLL,刪除這行包含在Makefile中。 – 2010-02-19 14:34:04

回答

3

您可以

嘗試
CONFIG += dll 
QT  -= gui core 
LIBS -= -lQtGui -lQtCore 
+0

我已經標記了你的答案,因爲它至少讓我有信心更仔細地研究實際構建的內容 - 然後我意識到(不同於我默認設置的其他項目發佈配置),此項目已設置默認 - 事實上,即使(.pro文件的配置部分)語法與其他項目相同,QtCreator也沒有顯示其他配置。你知道這可能是什麼原因嗎? – 2010-02-19 14:54:20

+0

查看和/或刪除yourporjectname.pro.user文件。 – 2010-02-19 15:09:57

+0

@Mihai:這是我做的第一件事(在發佈我的問題之前),它沒有任何區別。 – 2010-02-19 15:23:43

0

據我所知,如果您沒有將它們與IDE分開設置,Qt創建器不會考慮.pro配置。

您應該轉到項目設置,克隆調試配置,重命名它的發行版,將QMake生成配置設置爲釋放(!)並根據需要更改其他設置。然後,您可以從IDE中選擇要構建的配置。

P.S:嘗試使用Qt Creator 1.3.1,因爲它修復了很多錯誤並帶來了有趣的新功能。

+0

嗯,它似乎是一個1.2.1的錯誤。在安裝v3後,問題消失了......但是我知道未來,當我想創建自己的配置時,能否概述「克隆」現有配置以創建新配置所需的步驟? – 2010-02-19 15:39:28

+0

轉到項目>構建設置>添加>選擇克隆。然後選擇新配置(例如Release)並展開QMake構建步驟。將QMake構建配置設置爲釋放,就完成了。 – rpg 2010-02-22 10:58:56

10

CONFIG -= qt放在你的.pro文件中。

+0

這也沒有工作:/ – 2010-02-20 15:18:30

+1

它在這裏工作。 這是用於Qt源代碼樹中不與Qt鏈接的項目的方法。一般來說,它是有效的。例如,參見Qt源代碼樹中的'src/winmain/winmain.pro'。 (1)你真的再次運行qmake並重建了所有東西(在運行qmake之後做了一個完全乾淨的構建)。 (2)你鏈接的庫都不是自己鏈接到libQtCore或libQtGui(例如'datelib_release'不能鏈接到Qt)。 – rohanpm 2010-02-21 01:32:18

1

我有類似的問題。 我所做的是用qtcore和qtgui創建新的庫項目。刪除了由嚮導創建的所有不必要的文件。將我的文件添加到項目文件夾並修改* .pro文件。它開始正常工作。

這是QtCreator的一些問題,它沒有正確讀取.pro文件生成.pro.user,女巫QtCreator使用生成,並嚮導生成正確的.pro.user文件。

我這樣做是使用Qt 4.7

願望這幫助。

2

對於應用程序,你做這樣的:

TEMPLATE = app 
CONFIG = console 

此處瞭解詳情: qmake common projects