【轉載】Qt入門與提高:K02-01通過簡單exe介紹pro基本配置
版權宣告
---------------------------------------------------------------------------------------------------------------------
作者: 女兒叫老白
轉載請註明出處!
---------------------------------------------------------------------------------------------------------------------
引言
----------------------------------------------------------------------------------------------------------------------
從今天開始,我們開展一門《Qt入門與提高-開發完整的GUI程式》的課程,本課程側重原始碼開發,不會涉及QML程式設計。課程使用Qt5.11.1版本,VS2017的IDE開發環境。
正文
----------------------------------------------------------------------------------------------------------------------
今天,我們來看一下通過一個簡單的exe來介紹一下pro檔案的使用。
我們的exe功能很簡單,原始碼如下:
- /*! \file: main.cpp
- \brief mian()函式的實現檔案
- \author 星點課堂 女兒叫老白
- \Date 2018/8
- */
- #include<iostream>
- #include"qglobal.h"
- using std::cout;
- using std::endl;
- int main(intargc, char * argv[])
- {
- Q_UNUSED(argc);
- Q_UNUSED(argv);
- cout << "我真的啥也沒幹." << endl;
- return 0;
- }
複製程式碼
上述程式碼中,為了向終端輸出日誌,需要用到cout,endl。而這就需要引用<iostream>。所以我們需要編寫:
#include <iostream>
這是C++的寫法,在C中使用”iostream.h”。大家可能注意到了,我們使用using語句引入了cout和endl,這是因為我們不想引入整個stl名稱空間,有的coder可能會使用:
using namespace stl;
但我們不推薦這樣做。我們推薦僅引入所需的內容,或者不編寫引入名稱空間的程式碼,直接在使用cout時寫成:
std::cout <<“xxx” << std::endl;
main()函式確實比較簡單,我們來看一下怎麼編譯這個檔案。在C++中,如果使用gcc編譯器,那麼我們需要提供Makefile檔案(專案檔案),而這個檔案使用手工編寫是非常麻煩的,而且還涉及到非常多非常複雜的編譯選項。Qt提供了一種簡化手段來提供這個Makefile檔案,就是要求開發者提供pro檔案,然後使用qmake命令將其轉換為Makefile。pro檔案是什麼呢?
pro檔案是一個文字檔案,它採用key = values的語法,比如,我們這個工程用到了main.cpp,那麼我們可以在pro中編寫如下語句:
SOURCES += main.cpp
其中,SOURCES指明本專案用到的cpp檔案列表。其中+=表示在SOURCES原值的基礎上新增main.cpp。比如,我們在pro後面的部分可以繼續追加cpp檔案:
SOURCES +=imp.cpp
這樣專案包含的cpp檔案(SOURCES)就變成: main.cpp、imp.cpp。
如果有多個cpp檔案,我們可以寫在main.cpp的後面:
SOURCES +=main.cpp imp.cpp
但是,這樣可讀性不是很好,我們一般會使用 “\”進行換行,比如:
SOURCES +=main.cpp \
imp.cpp
請注意main.cpp和”\”之間最好加一個空格以便增加可讀性。
如果有標頭檔案,我們可以使用HEADERS配置項,用法同SOURCES。
為了指明本專案的目標程式名稱,我們用到TARGET配置項:
TARGET =ks02_01
這行程式碼表明我們的專案最終程式為ks02_01,如果它是一個可執行程式,那麼最終在windows上生成的程式為ks02_01.exe,在linux上(或unix)上為ks02_01。如果生成的是一個dll,那麼在windows上為ks02_01.dll,在linux(或unix)上可能為libks02_01.so.1.0.0。
這是最最基本的配置,我們來看一下整個專案的pro檔案:
- TEMPLATE = app
- LANGUAGE = C++
複製程式碼
其中,TEMPLATE = app表示這是一個exe。如果是dll,則TEMPLATE=lib。
因為使用C++語言進行開發,所以配置為:LANGUAGE = C++。
我們這個專案是一個終端執行程式,所以設定為:CONFIG += console,如果不設定,則無法在終端中正常執行(比如,cout的資訊無法輸出到終端)。
最後的幾個DIR用來設定各種檔案的路徑。
DESTDIR表示最終目標程式的存放路徑。
OBJECTS_DIR表示臨時檔案的路徑。
MOC_DIR用來設定moc檔案的存放路徑(Qt的moc命令生成的臨時檔案)。該配置項我們後面章節中會詳細說明一下。
大家可能注意到了,這些路徑的設定都使用了相對路徑的方式,這種方式其實我們並不推薦,後面的章節中,我們會使用環境變數的方式設定這些路徑。
我們把pro檔案和cpp檔案放到同一個目錄下,取名為ks02_01。然後在VS2017的64位命令列下執行:
- qmake
- nmake
複製程式碼
程式即可編譯成功。
如果您希望使用VS2017的IDE開發環境開啟該專案,那麼需要生成VS2017可以識別的專案檔案,方法是在VS2017的64位命令列中,進入專案所在目錄,執行:
- qmake -tp vc
複製程式碼
好了,pro介紹完畢,大家可以嘗試一把了。
結語
----------------------------------------------------------------------------------------------------------------------
本文介紹了pro最常用的配置項,是為了大家能夠開始自己的第一個Qt程式,後面我們會按照產品開發體系講解Qt的更多知識,歡迎您提出寶貴意見。