QT源碼和SDK下載
QT5.13安裝
windows下通常使用VS來開發,而linux下則使用OtCreator來開發。
linux,以Ubuntu為例
安裝Qt前需要先安裝 g++ make
sudo apt-get install libgl1-mesa-dev
安裝環境准備好后直接安裝 ./qt-opensource-linux-x64-5.13.0.run 即可。
注意:一般安裝在/usr下,里面很多文件夾,根據文件的類型,分門別類,不是一個軟件一個文件夾。以前老版本的Linux習慣放在/usr/local目錄下。
部分軟件放在/opt下,則是一個軟件統一在一個文件夾下。/opt目錄專門是用來給第三方軟件放置文件的,比如一些壓縮包解壓的軟件都放在這里。
比如“網易雲音樂”就安裝在/usr/lib/netease-cloud-music
比如Chrome就放在/opt/google/chrome
Windows下調試工具的安裝設置(使用微軟的編譯器)
安裝完VisualStudio2017后,接着安裝win10 SDK,安裝完成后,在C:\Program Files (x86)\Windows Kits\10\Debuggers\x64(x86)下有一個cdb.exe用於調試。
Windows下,為QTCreator配置時注意使用的QT支持的編譯器和VS支持的編譯器必須一致。這里我們使用VS2017和QT5.13。
安裝完后,打開Kits界面,如下所示進行查看。編譯器有可能沒有配置,需要手動選擇一下。
QTCreator項目配置
1 配置庫和頭文件
然后導入頭文件和lib文件所在路徑,將dll拷貝到可執行目錄下。
2、VS+QT項目配置
2.1、 首先安裝QT的插件,根據VS的版本安裝,這里使用qt-vsaddin-msvc2017-2.3.2
2.2、打開VS后,在菜單欄中的QT VS Tools->QT Options,配置你的QT版本
一 QT程序編譯經歷的步驟
1 qmake編譯pro生成makefile
2 jom或者make編譯makefile
生產界面源碼 uic.exe widget.ui –o ui_widget.h
生產信號槽代碼 moc.exe widget.h moc_widget.cpp
二 手動創建pro
windows下環境設置如下
linux下設置如下
先設置qmake的路徑,然后使用qmake由testqmake.pro文件構建得到makefile文件。
然后使用make編譯得到可執行文件。
三、將QtCreator創建的工程轉換為VS
直接使用命令的行
使用命令行產生的代碼在VS打開時,可能會出現“找不到 Windows SDK 版本8.1.請安裝所需的版本的 Windows SDK 或者在項目屬性頁的問題解決方案”這種錯誤。處理方法如下所示。
或者使用插件也可以將QTCreator工程轉換為VS工程。
四、pro文件下添加一個內部庫
無論是通過UI,還是直接在pro文件中更改,都需要在添加之后,重新執行下qmake。
在幫助手冊中找到你要使用的QT內部類,幫助手冊會告訴你這個類該使用什么模塊。
五、頭文件引用。
對於工程來說,當前路徑表示的是構建路徑,即和源碼同一級的文件夾下,如圖是build-testqmake-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug文件夾下。
$$PWD是獲取當前源碼路徑,即在testqmake文件夾下,所以以下兩個路徑是相等的。
六、pro文件下 庫引用和庫路徑指定。
語法: LIBS += -L”../../lib” –lopencv_world320 類似於鏈接庫
雖然Windows和linux下庫的名字稍有區別
linux下 libopencv_world320.so
windows下 opencv_world320.lib
但是QT會自動幫我們對應不同的平台。
pro文件下指定運行目錄
DESTDIR += ../../bin
pro文件下指定運行程序名字
TARGET = testq
七、QT創建一個動態庫
pro文件下指定TEMPLATE = lib,如果pro文件下不指定,則默認生成應用程序。
linux下動態庫是xxx.so 靜態庫是xxx.a
windows下動態庫是xxx.dll 靜態庫是xxx.lib,而且動態庫還包含一個標示地址的lib文件,而且,windows下還需要指定導出函數。
八、debug和release版本編譯設置
CONFIG += debug_and_release(默認情況下是debug和release都有的)
除此之外,CONFIG還提供了CONFIG()函數。如下所示,如果是debug版本則輸出的程序稱為debug_binary,否在是release_binary。
CONFIG(debug, debug|release){//注意大括號必須緊跟着
TARGET = debug_binary
}else{
TARGET = release_binary
}
九、跨平台編譯項目
針對不同平台使用不同配置
win32:INCLUDEPATH += “C:/mylibs/extra headers”
win32{
message(win32)
}
不是linux的平台
!linux{
message(win32)
}
如果是win32或linux
win32|linux{
message(win32)
}
QT內置定義了一些值 win32 linux macx unix
變量 QMAKESPEC 存儲了當前的編譯環境 message($$QMAKESPEC)可以打印出當前的編譯環境。
我們可以查看
QT\5.13.0\msvc2017\mkspecs文件下的平台。
最后附上一個pro文件
#指定源碼
SOURCES += xsocket.cpp
#指定頭文件
HEADERS += xsocket.h \
xglobal.h
#指定生成的dll的名字
TARGET = libdll
#指定生成動態庫
TEMPLATE = lib
#如果要生成靜態庫則需要再加一個
#CONFIG += staticlib
#添加LIBDLL_LIB宏
DEFINES +=LIBDLL_LIB
#指定dll的輸出路徑,只針對windows
DLLDESTDIR = ../../bin
#指定輸出路徑,編譯生成的所有文件都會往這個路徑輸入
DESTDIR = ../../lib