1. 程式人生 > >【轉載】Qt入門與提高:K02-01通過簡單exe介紹pro基本配置

【轉載】Qt入門與提高:K02-01通過簡單exe介紹pro基本配置

版權宣告

---------------------------------------------------------------------------------------------------------------------

作者: 女兒叫老白

轉載請註明出處!

---------------------------------------------------------------------------------------------------------------------

引言

----------------------------------------------------------------------------------------------------------------------

      從今天開始,我們開展一門《Qt入門與提高-開發完整的GUI程式》的課程,本課程側重原始碼開發,不會涉及QML程式設計。課程使用Qt5.11.1版本,VS2017的IDE開發環境。

正文

----------------------------------------------------------------------------------------------------------------------

     今天,我們來看一下通過一個簡單的exe來介紹一下pro檔案的使用。

       我們的exe功能很簡單,原始碼如下:

  1. /*! \file: main.cpp
  2. \brief mian()函式的實現檔案
  3. \author 星點課堂 女兒叫老白
  4. \Date 2018/8
  5. */
  6. #include<iostream>
  7. #include"qglobal.h"
  8. using std::cout;
  9. using std::endl;
  10. int main(intargc, char * argv[])
  11. {
  12.     Q_UNUSED(argc);
  13.     Q_UNUSED(argv);
  14.     cout << "我真的啥也沒幹." << endl;
  15.     return 0;
  16. }

複製程式碼

    上述程式碼中,為了向終端輸出日誌,需要用到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檔案:

  1. TEMPLATE   = app
  2. 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位命令列下執行:

  1. qmake
  2.     nmake

複製程式碼

程式即可編譯成功。

如果您希望使用VS2017的IDE開發環境開啟該專案,那麼需要生成VS2017可以識別的專案檔案,方法是在VS2017的64位命令列中,進入專案所在目錄,執行:

  1. qmake  -tp  vc

複製程式碼

好了,pro介紹完畢,大家可以嘗試一把了。

結語

----------------------------------------------------------------------------------------------------------------------

      本文介紹了pro最常用的配置項,是為了大家能夠開始自己的第一個Qt程式,後面我們會按照產品開發體系講解Qt的更多知識,歡迎您提出寶貴意見。