1. Qt 中的項目文件(.pro)裡面的問題!
加入Qt的network模塊
DEPENDPATH描述建立應用程序所依賴的其他文件所在的路徑
2. 為什麼 Qt Creator 的編譯如此之慢
1. 「用Qt寫的程序編譯比MFC慢」的說法是錯誤的
絕對錯誤,單位代碼行數編譯Qt遠比MFC快得多,因為Qt庫的頭文件設計非常好,盡量都使用了前置聲明,避免了頭文件嵌套,幾乎所有類都使用了公有類和私有類的設計,把沒必要公開的聲明放到私有頭文件里,避免了編譯時引入過多代碼。而MFC沒有這樣的設計。
至於大家感覺MFC快主要原因是MFC工程默認打開了編譯預處理頭文件(PCH),但是這是VC編譯器的特性,所有C++程序都可以用,不是MFC特有,Qt也可以使用 PCH
方法很簡單,在你的 .pro 文件中加入一行
PRECOMPILED_HEADER = stable.h指定 Stable.h這個頭文件作為編譯預處理文件,MFC里這個文件一般叫stdafx.h
然後在 stable.h里 包含你所用到的所有 Qt 頭文件,如果你用了很多qt的類可以直接包含所有
比如 :
#include <QtCore>
#include <QtGui>這兩個文件里又包含了幾乎所有Qt常用類
不用擔心,即使包含了所有頭文件也沒關系,有了PCH再多頭文件也沒影響。
如果你還想編譯再快點,可以在 .pro里加入下面一行
QMAKE_CXXFLAGS += /MP指定/mp編譯選項,編譯器將使用並行編譯,同時起多個編譯進程並行編譯不同的cpp
而且QT這種引入PCH的方法比MFC的好,由於MFC的PCH選項是每個工程逐個指定的,很容易被某些人搞壞,我曾經無數次修復PCH問題,但是Qt的選項是寫在.pro里的,寫一次就永遠不會錯。
MFC一旦弄壞了PCH,編譯也慢得令人發指。
給
個參考時間吧,YY最新版本大約 100多萬行C++代碼,rebuild debug和releae總共需要20多分鍾,機器是i5
四核SSD硬碟。其實對於大項目硬碟才是瓶頸,如果換機械硬碟要慢差不多70%,有個同事用10G內存做了個內存檔編譯,還能快30%。
如果你比這個慢,請檢查自己的代碼問題。
2. 「QT本身編譯慢」的說法是錯的
Qt
本身其實編譯並不慢,慢的是webkit庫和例子程序,你如果不改任何選項默認是會編譯所有的,webkit本身就是個恐龍級項目,用了太多泛型技術,編
譯非常慢。另外Qt里附帶了數百個例子工程,都編譯一邊也很慢。如果僅編譯QT核心庫是很快的,比如QtCore只需要1分鍾,QtGui大約5分鍾。
送個福利(僅限windows vc++ 2008):
configure.exe
-qt-libjpeg -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -no-libtiff
-no-libmng -nomake examples -nomake demos -no-webkit -nomake doc
-no-plugin-manifests -no-exceptions -no-rtti -no-qt3support -no-openssl
-no-opengl -no-multimedia -no-3dnow -no-native-gestures -no-style-motif
-no-style-cde -no-style-cleanlooks -no-style-plastique -no-sql-sqlite
-no-dbus -platform win32-msvc2008
這是我自己用的Qt編譯前的配置命令行,把我自己用不到的都去掉了,這樣配置編譯就快很多了。
我把 webkit examples demos 等大傢伙都去掉了。如果你真的需要這些,可以安裝Qt sdk裡面有編譯好的版本。
補充:Qt creator只是IDE,不是編譯器,編譯慢真的不關他的事,要看你具體用的編譯器是什麼。一般來說在Windows下就是minGW,也就是一個移植版本的GCC,的確是不如VC++里的CL快的。
如果是其它平台,那麼編譯器可以換成LLVM的clang,那就快很多了。
在Windows下來是用VC++吧,推薦VC2008,Qt和VC的IDE結合非常好,我現在的項目都是用VC2008+QT的,開發效率很高,記得裝Visual Assist哦。
qmake -tp vc
可以用 .pro生產 .vcproj的VC工程文件,可以用VC++打開編譯。
3. 如何將qt中pro文件區別linux
Qt在pro或pri文件的語法中只能區分出windows、Unix和Mac三類操作系統,Linux應歸屬於Unix類操作系統之中,一般使用如下標識符
win32, unix, macx
在這三類操作系統下,尤其是Windows如果要區分出32位與64位的話就需要用到QT_ARCH這個變數了。該變數與你機器上安裝的Qt版本有關。
舉例如下
win32 {
contains(QT_ARCH, i386) {
message("32-bit")
LIBS += ...... (32位庫)
}else {
message("64-bit")
LIBS += ...... (63位庫)
}
}
4. qt一直構建Pro文件,這是為什麼呢我的Pro文件和編譯信息輸出如圖片所示,好幾天了,那位大俠指
電腦時間問題,因為電腦設置的時間與標准時間不對應,所以一直在qmake,把時間設置正確即可。
5. 如何在Qt Creator 創建一個.pri文件
假設你的項目在名為demo的文件夾下
你可以在你的demo裡面新建一個文件夾名為pridemo,
在pridemo裡面新建一個hello.pri的文件 空的即可
然後再你的工程裡面的demo.pro裡面寫上
include (./prodemo/hello.pri) 中間注意空格
然後運行一下,.pri文件就會自動導入到你的工程下;
6. Qt下如何編譯庫
一般分為動態庫和靜態庫,方法分別如下:
一.
靜態庫的生成
1.
測試目錄:
lib
2.
源碼文件名:
mywindow.h,
mywindow.cpp
3.
編寫項目文件:
mywindow.pro
注意兩點:
TEMPLATE
=
lib
CONFIG
+=
staticlib
4.
生成Makefile:
qmake
mywindow.pro
5.
編譯生成靜態庫libmywindow.a
make
二.
靜態庫的使用
1.
測試目錄:
test
2.
將mywindow.h與libmywindow.a拷貝至test目錄下
3.
編寫main.cpp,
包含頭文件mywindow.h,
並調用MyWindow類
4.
編寫項目文件:
test.pro
注意加上庫路徑與庫文件名:
LIBS
+=
-L
./
-lmywindow
5.
生成Makefile:
qmake
test.pro
6.
編譯:
make
7.
運行:
./test
三.
動態庫的生成
動態庫編譯基本和靜態庫類似,需要將上述將要進行編譯的項目文件.pro中下面這行去掉
CONFIG
+=
staticlib
按上述操作編譯完後就可以得到以lib開頭並且.so*
結尾動態庫文件,一般有多個。
7. qt .pro配置 codesign.depends
編譯QT的工程的時候,一般都會讓qmake自動生成,但有時我們需要定製我們的工程,那麼就必須改寫pro文件。
要自己全部寫pro文件又有點麻煩,所以,一般都是先運行qmake -project來生成基本的pro文件。
(1) 模板變數
TEMPLATE = app
(2)生成目錄
指定生成的可執行程序的目錄,可以絕對和相對路徑DESTDIR += ../bin
(3)生成的應用程序名,即軟體名TARGET = qtest
(4)編譯選項
增添或者移除某個模塊
(5)目標文件目錄
obj文件存放的目錄,可以絕對或相對路徑OBJECTS_DIR += ../tmp
(6)工程中包含的頭文件
(7)工程中包含的源文件
(8)工程中包含的資源文件
(9)附加頭文件包含目錄
(10)鏈接庫
8. Qt編譯的時候說沒有找到.pro文件
在pro文件中添加libs
libs
+=
-l
folderpath
//引入的lib文件的路徑
-l:引入路徑
release:libs
+=
-l
folderpath
//
release
版引入的lib文件路徑
debug:libs
+=
-l
folderpath
//
debug
版引入的lib
文件路徑
9. 帶塗層的pro格式怎麼發
PRO格式文件有三種文件格式:PRO格式文件是Qt軟體開發工具創建的項目文件,支持跨平台,不過在運行的之前,要使用QT命令將所有的信息進行編譯。
PRO格式文件包含文件有臨時工程文件,源代碼文件,項目庫文件,還有一些其他的文件格式,如代碼源文件QRC格式文件、項目文件是PRI文件,編譯源文件是TS格式文件,樣式文件。PRO格式文件也可能是ProPresenter創建演示文件,ProPresenter是編輯創建演示程序;可以包含視頻和歌詞歌曲和其他音樂;經常在使用的過程中創建可視化顯示。PRO格式文件AdobeProto創建的文件,用於創建互動式線框圖的Adobe應用程序和網站原型;可以存儲多個頁面布局,每個互動元素;支持CSSWebKit,jQuery技術。Adobe原始設計可以呈現和在標准Web瀏覽器中查看。保存項目,可上載到Adobe創意更廣泛的編輯雲,然後在Dreamweaver中下載。
10. qt designer調試的問題,是不是用designer創建的對話框什麼的也要qmake以後才能編譯
Qt designer 能創建的是一個.ui文件,用XML寫成,IDE中的qmake通常都是必須有建立好的工程才能run qmake,而designer默認只負責UI界面編寫,不能自動調用qmake產生.pro文件建立工程的,Qt Creator是各個工具的集成體,你在Creator里剛開始就自動創建好工程了。如果要不藉助Qt Creator,那麼先建好一個文件夾(與預期工程名相同),然後在其下編寫main文件,用designer生成的文件用 uic *.ui > ui_*.h,然後在需要的地方#include 這個頭文件就可以了,要想創建工程, 目錄下運行qmake -project,這樣就有了一個pro文件,之後的話用Creator打開也可以直接編輯,如果是linux下哦你個 QDevelop打開,都可以的。