如何讓qmake生成的Makefie不鏈結Qt庫

2021-05-23 07:13:07 字數 993 閱讀 2835

在csdn上搜尋了一下,大部分關於qmake的例項都是鏈結到qt庫,包括qtcore和qtgui。如果只是想寫乙個普通的c++命令列程式,鏈結qt庫顯然是使得最終生成的程式尺寸變得臃腫,而且必須要安裝龐大的qt包。

那麼如何讓qmake不鏈結到qt庫呢?

預設情況下,qmake是要鏈結qtcore和qtgui兩個庫的。即使你什麼也不做,因為這是預設行為。

通過以下配置可以解除這種配置。

簡單吧,這下清淨了,我們明確告知qmake這不是qt程式,只需要qmake為我們生成普通makefile,其他什麼也不要多做。

以下是我為boost asio中乙個簡單tcp伺服器程式寫的qmake工程檔案:tcpserver.pro。

正如注釋中提到的,執行 qmake -makefile -spec linux-g++ tcpserver.pro 生成可用linux g++編譯器進行編譯的makefile。

如果我們將 「config –= qt」 這一行注釋掉,及使用qmake的預設配置,那麼來比較一下兩者的差別。

下面一欄是qmake預設配置下生成的makefile。可以清晰的看出,預設生成的makefile增加了qt巨集定義、標頭檔案路徑、qtgui和qtcore鏈結庫。而上面一欄是 增加了 」config –= qt 「配置的生成的makefile,顯然清爽了很多。只有我們指定的庫檔案。

順帶提一下,qmake中訪問環境變數的方法是 $$(env_var),env_var是變數名。 注意是兩個美元符加小括號包圍哦 ^_^

qmake生成的makefile尺寸還是很精簡的,可以清晰看懂。我把上面完整的makefile貼出來。

以上makefile作者在 ubuntu 10.04上配合boost_1_43_0 編譯通過。

qmake也可以為c++生成windows下的 vc工程 .vcproj。這裡不提,qmake文件有詳細的說明,利用qmake我們可以為跨平台c++程式管理編譯工程。

如何獲取qmake

作者在ubuntu上直接執行以下軟體包安裝命令。

qmake生成vs的vcproj sln工程

qmake生成的vs工程與環境變數中的 qmakespec相關,可以有兩種方法 1.預設情況下,即環境變數qmakespec為你裝的qt for vs的版本,預設生成的為該版本的vs工程,如,你裝的是qt for vs2010,那麼環境變數qmakespec win32 msvc2010,預設情況下...

qmake生成VS的vcproj sln工程檔案

1.預設情況下,即環境變數qmakespec為你裝的qt for vs的版本,預設生成的為該版本的vs工程,如,你裝的是qt for vs2010,那麼環境變數qmakespec win32 msvc2010,預設情況下生成的是vc2010的工程。當你的xx.pro的template subdirs...

巧用qmake工具生成專業的makefile

問題描述 一般來說在linux下程式設計寫個測試程式,都需要製作乙個makefile檔案,但是如果自己手動編寫每個還是比較麻煩,而且看上去也不太專業。而如果用autoconf工具生成也還是需要加入一些手動操作,也不是很方便。解決方法 利用qt程式裡的qmake工具,qmake工具是qt 開發環境中的...