QT 環境安裝和跨平臺編譯那些事

 QT源碼和SDK下載linux

http://download.qt.iochrome

 

QT5.13安裝windows

windows下一般使用VS來開發,而linux下則使用OtCreator來開發。socket

 

linux,以Ubuntu爲例函數

安裝Qt前須要先安裝 g++ make工具

sudo apt-get install libgl1-mesa-devui

安裝環境準備好後直接安裝 ./qt-opensource-linux-x64-5.13.0.run 便可。google

注意:通常安裝在/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拷貝到可執行目錄下。

 

二、VS+QT項目配置

 

2.一、 首先安裝QT的插件,根據VS的版本安裝,這裏使用qt-vsaddin-msvc2017-2.3.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編譯獲得可執行文件。

 

3、將QtCreator建立的工程轉換爲VS

直接使用命令的行

 

使用命令行產生的代碼在VS打開時,可能會出現「找不到 Windows SDK 版本8.1.請安裝所需的版本的 Windows SDK 或者在項目屬性頁的問題解決方案」這種錯誤。處理方法以下所示。

 

 

或者使用插件也能夠將QTCreator工程轉換爲VS工程。

 

 

 

4、pro文件下添加一個內部庫

不管是經過UI,仍是直接在pro文件中更改,都須要在添加以後,從新執行下qmake。

 

在幫助手冊中找到你要使用的QT內部類,幫助手冊會告訴你這個類該使用什麼模塊。

 

 

 

5、頭文件引用。

對於工程來講,當前路徑表示的是構建路徑,即和源碼同一級的文件夾下,如圖是build-testqmake-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug文件夾下。

 

$$PWD是獲取當前源碼路徑,即在testqmake文件夾下,因此如下兩個路徑是相等的。

 

 

 

6、pro文件下 庫引用和庫路徑指定。

語法: LIBS += -L」../../lib」 –lopencv_world320 相似於連接庫

雖然Windows和linux下庫的名字稍有區別

linux下 libopencv_world320.so

windows下 opencv_world320.lib

可是QT會自動幫咱們對應不一樣的平臺。

 

pro文件下指定運行目錄

DESTDIR  +=  ../../bin

 

pro文件下指定運行程序名字

TARGET = testq

 

7、QT建立一個動態庫

pro文件下指定TEMPLATE = lib,若是pro文件下不指定,則默認生成應用程序。

linux下動態庫是xxx.so 靜態庫是xxx.a

windows下動態庫是xxx.dll 靜態庫是xxx.lib,並且動態庫還包含一個標示地址的lib文件,並且,windows下還須要指定導出函數。

 

8、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

}

 

9、跨平臺編譯項目

針對不一樣平臺使用不一樣配置

 

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
相關文章
相關標籤/搜索