溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

K02-01如何通過簡單exe介紹pro基本配置

發(fā)布時間:2021-11-15 10:51:23 來源:億速云 閱讀:154 作者:小新 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)K02-01如何通過簡單exe介紹pro基本配置,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

正文

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

本節(jié),我們通過一個簡單的exe介紹pro文件的基本配置。

    我們的exe功能很簡單,僅輸出一行信息: 我真的啥也沒干。

代碼清單02-01-01

main.cpp

  1. #include <iostream>

  2. #include "qglobal.h"


  3. using std::cout;

  4. using std::endl;

  5. int main(int argc, char * argv[])

  6. {

  7. Q_UNUSED(argc);

  8. Q_UNUSED(argv);


  9. cout << "我真的啥也沒干." << endl;

  10. return 0;

  11. }


復(fù)制代碼

    在代碼清單02-01-01中,為了向終端輸出日志,需要用到cout,行尾的endl表示換行。這需要引用<iostream>,所以我們編寫了第1行的include語句。

    這是C++的寫法,在C中使用“iostream.h”。

大家可能注意到了,在第4~5行代碼,我們使用using語句引入了cout和endl。這是因為我們不想引入整個stl命名空間,有的coder可能會使用如下代碼:

  1. using namespace stl; // 不推薦

復(fù)制代碼

    但我們不推薦這樣做。我們推薦僅引入所需的內(nèi)容,或者不編寫引入命名空間的代碼,而是直接在使用cout時寫成:   

  1. std::cout << “xxx” << std::endl;

復(fù)制代碼

    main()函數(shù)比較簡單,無需過多講解。我們來看一下怎么編譯這個文件。在C++中,如果使用gcc編譯 器,那么我們需要提供Makefile文件(項目文件),而這個文件使用手工編寫是非常麻煩的,而且還涉及到非常多非常復(fù)雜的編譯選項。Qt提供了一種簡化手段來提供這個Makefile文件,它要求開發(fā)者提供pro文件,然后使用qmake命令將其轉(zhuǎn)換為Makefile。那么pro文件是什么呢?

    pro文件是一個文本文件,它采用key = values的語法。比如,我們這個工程用到了main.cpp,那么我們可以在pro中編寫如下語句:   

  1. SOURCES +=  main.cpp

復(fù)制代碼

其中,SOURCES指明本項目用到的cpp文件列表。其中+=表示在SOURCES原值的基礎(chǔ)上添加main.cpp。比如,我們在pro后面的部分可以繼續(xù)追加cpp文件:

  1. SOURCES +=  main.cpp 


  2. SOURCES += imp.cpp


復(fù)制代碼

這樣項目包含的cpp文件(SOURCES)就變成:main.cpp、imp.cpp。

    如果有多個cpp文件,我們可以寫在main.cpp的后面:

  1. SOURCES += main.cpp  imp.cpp

復(fù)制代碼

但是,這樣可讀性不是很好,我們一般會使用“\”進行換行,比如:

  1. SOURCES += main.cpp \

  2.                    imp.cpp


復(fù)制代碼

    請注意main.cpp和“\”之間最好加一個空格以便增加可讀性。

    如果向項目中添加頭文件,我們可以使用HEADERS配置項,用法同SOURCES。比如:

  1. HEADERS+= myclass.h \

  2.                  imp.h


復(fù)制代碼

    為了指明本項目的目標(biāo)程序名稱,我們用到TARGET配置項:

  1. TARGET   = ks02_01

復(fù)制代碼

    這行代碼表明我們的項目最終程序為ks02_01,如果它是一個可執(zhí)行程序,那么最終在windows上生成的程序為ks02_01.exe,在linux上(或unix)上為ks02_01。如果生成的是一個dll,那么在windows上為ks02_01.dll,在 linux(或unix)上可能為libks02_01.so.1.0.0。

    以上介紹了pro文件最最基本的配置。我們看一下pro文件的完整內(nèi)容:

代碼清單02-01-02

ks02_01.pro

  1. TEMPLATE         = app

  2. LANGUAGE         = C++

  3. CONFIG            += console

  4. TARGET       = ks02_01

  5. HEADERS            += ks02_01.pro          

  6. SOURCES     +=  main.cpp

  7. DESTDIR          = ../../../bin

  8. OBJECTS_DIR  = ../../../obj/chapter02/ks02_01

  9. MOC_DIR             = ../../../obj/moc/chapter02/ks02_01


復(fù)制代碼

   在代碼清單02-01-02中,TEMPLATE = app表示這是一個exe項目。如果是dll,則TEMPLATE=lib。

    因為使用C++語言進行開發(fā),所以配置為:LANGUAGE = C++。

    我們這個項目是一個終端運行程序(命令行程序),所以設(shè)置為:CONFIG += console,如果不設(shè)置,則無法在終端中正常運行(比如,cout的信息無法輸出到終端)。讀者可以封掉這行配置進行驗證,方法是在改行配置前加上一個"#"號(請使用英文、半角,不要用中文輸入),"#"的作用表示本行為注釋,那么Qt就不會把這行當(dāng)作配置進行解析。

    最后的幾個DIR用來設(shè)置各種文件的路徑。

    DESTDIR:表示最終目標(biāo)程序的存放路徑。   

    OBJECTS_DIR:表示程序生成的中間臨時文件的存放路徑。

    MOC_DIR:用來設(shè)置moc文件的存放路徑(Qt的moc命令生成的臨時文件)。該配置項我們后面章節(jié)中會詳細(xì)說明。

大家可能注意到了,在本節(jié)的pro中這些路徑的設(shè)置都使用了相對路徑的方式。其實我們并不推薦這種方式,在后面的章節(jié)中我們會使用環(huán)境變量的方式設(shè)置這些路徑。

現(xiàn)在把pro文件和cpp文件放到同一個目錄下,目錄名為ks02_01。然后在VS2017的64位命令行下,進入項目所在目錄,執(zhí)行:

  1. qmake

  2. nmake


程序即可編譯成功。

如果您希望使用VS2017的IDE開發(fā)環(huán)境打開該項目,那么需要生成VS2017可以識別的項目文件,方法是在VS2017的64位命令行中,進入項目所在目錄,運行:

  1. qmake  -tp  vc

這樣就可以得到名為ks02_01.vcxproj的項目文件,該文件可以被VS2017識別。

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

關(guān)于“K02-01如何通過簡單exe介紹pro基本配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI