這篇文章將為大家詳細(xì)講解有關(guān)K02-01如何通過(guò)簡(jiǎn)單exe介紹pro基本配置,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
正文
----------------------------------------------------------------
本節(jié),我們通過(guò)一個(gè)簡(jiǎn)單的exe介紹pro文件的基本配置。
我們的exe功能很簡(jiǎn)單,僅輸出一行信息: 我真的啥也沒(méi)干。
代碼清單02-01-01
main.cpp
#include <iostream>
#include "qglobal.h"
using std::cout;
using std::endl;
int main(int argc, char * argv[])
{
Q_UNUSED(argc);
Q_UNUSED(argv);
cout << "我真的啥也沒(méi)干." << endl;
return 0;
}
復(fù)制代碼
在代碼清單02-01-01中,為了向終端輸出日志,需要用到cout,行尾的endl表示換行。這需要引用<iostream>,所以我們編寫了第1行的include語(yǔ)句。
這是C++的寫法,在C中使用“iostream.h”。
大家可能注意到了,在第4~5行代碼,我們使用using語(yǔ)句引入了cout和endl。這是因?yàn)槲覀儾幌胍胝麄€(gè)stl命名空間,有的coder可能會(huì)使用如下代碼:
using namespace stl; // 不推薦
復(fù)制代碼
但我們不推薦這樣做。我們推薦僅引入所需的內(nèi)容,或者不編寫引入命名空間的代碼,而是直接在使用cout時(shí)寫成:
std::cout << “xxx” << std::endl;
復(fù)制代碼
main()函數(shù)比較簡(jiǎn)單,無(wú)需過(guò)多講解。我們來(lái)看一下怎么編譯這個(gè)文件。在C++中,如果使用gcc編譯 器,那么我們需要提供Makefile文件(項(xiàng)目文件),而這個(gè)文件使用手工編寫是非常麻煩的,而且還涉及到非常多非常復(fù)雜的編譯選項(xiàng)。Qt提供了一種簡(jiǎn)化手段來(lái)提供這個(gè)Makefile文件,它要求開(kāi)發(fā)者提供pro文件,然后使用qmake命令將其轉(zhuǎn)換為Makefile。那么pro文件是什么呢?
pro文件是一個(gè)文本文件,它采用key = values的語(yǔ)法。比如,我們這個(gè)工程用到了main.cpp,那么我們可以在pro中編寫如下語(yǔ)句:
SOURCES += main.cpp
復(fù)制代碼
其中,SOURCES指明本項(xiàng)目用到的cpp文件列表。其中+=表示在SOURCES原值的基礎(chǔ)上添加main.cpp。比如,我們?cè)趐ro后面的部分可以繼續(xù)追加cpp文件:
SOURCES += main.cpp
SOURCES += imp.cpp
復(fù)制代碼
這樣項(xiàng)目包含的cpp文件(SOURCES)就變成:main.cpp、imp.cpp。
如果有多個(gè)cpp文件,我們可以寫在main.cpp的后面:
SOURCES += main.cpp imp.cpp
復(fù)制代碼
但是,這樣可讀性不是很好,我們一般會(huì)使用“\”進(jìn)行換行,比如:
SOURCES += main.cpp \
imp.cpp
復(fù)制代碼
請(qǐng)注意main.cpp和“\”之間最好加一個(gè)空格以便增加可讀性。
如果向項(xiàng)目中添加頭文件,我們可以使用HEADERS配置項(xiàng),用法同SOURCES。比如:
HEADERS+= myclass.h \
imp.h
復(fù)制代碼
為了指明本項(xiàng)目的目標(biāo)程序名稱,我們用到TARGET配置項(xiàng):
TARGET = ks02_01
復(fù)制代碼
這行代碼表明我們的項(xiàng)目最終程序?yàn)閗s02_01,如果它是一個(gè)可執(zhí)行程序,那么最終在windows上生成的程序?yàn)閗s02_01.exe,在linux上(或unix)上為ks02_01。如果生成的是一個(gè)dll,那么在windows上為ks02_01.dll,在 linux(或unix)上可能為libks02_01.so.1.0.0。
以上介紹了pro文件最最基本的配置。我們看一下pro文件的完整內(nèi)容:
代碼清單02-01-02
ks02_01.pro
TEMPLATE = app
LANGUAGE = C++
CONFIG += console
TARGET = ks02_01
HEADERS += ks02_01.pro
SOURCES += main.cpp
DESTDIR = ../../../bin
OBJECTS_DIR = ../../../obj/chapter02/ks02_01
MOC_DIR = ../../../obj/moc/chapter02/ks02_01
復(fù)制代碼
在代碼清單02-01-02中,TEMPLATE = app表示這是一個(gè)exe項(xiàng)目。如果是dll,則TEMPLATE=lib。
因?yàn)槭褂肅++語(yǔ)言進(jìn)行開(kāi)發(fā),所以配置為:LANGUAGE = C++。
我們這個(gè)項(xiàng)目是一個(gè)終端運(yùn)行程序(命令行程序),所以設(shè)置為:CONFIG += console,如果不設(shè)置,則無(wú)法在終端中正常運(yùn)行(比如,cout的信息無(wú)法輸出到終端)。讀者可以封掉這行配置進(jìn)行驗(yàn)證,方法是在改行配置前加上一個(gè)"#"號(hào)(請(qǐng)使用英文、半角,不要用中文輸入),"#"的作用表示本行為注釋,那么Qt就不會(huì)把這行當(dāng)作配置進(jìn)行解析。
最后的幾個(gè)DIR用來(lái)設(shè)置各種文件的路徑。
DESTDIR:表示最終目標(biāo)程序的存放路徑。
OBJECTS_DIR:表示程序生成的中間臨時(shí)文件的存放路徑。
MOC_DIR:用來(lái)設(shè)置moc文件的存放路徑(Qt的moc命令生成的臨時(shí)文件)。該配置項(xiàng)我們后面章節(jié)中會(huì)詳細(xì)說(shuō)明。
大家可能注意到了,在本節(jié)的pro中這些路徑的設(shè)置都使用了相對(duì)路徑的方式。其實(shí)我們并不推薦這種方式,在后面的章節(jié)中我們會(huì)使用環(huán)境變量的方式設(shè)置這些路徑。
現(xiàn)在把pro文件和cpp文件放到同一個(gè)目錄下,目錄名為ks02_01。然后在VS2017的64位命令行下,進(jìn)入項(xiàng)目所在目錄,執(zhí)行:
qmake
nmake
程序即可編譯成功。
如果您希望使用VS2017的IDE開(kāi)發(fā)環(huán)境打開(kāi)該項(xiàng)目,那么需要生成VS2017可以識(shí)別的項(xiàng)目文件,方法是在VS2017的64位命令行中,進(jìn)入項(xiàng)目所在目錄,運(yùn)行:
qmake -tp vc
這樣就可以得到名為ks02_01.vcxproj的項(xiàng)目文件,該文件可以被VS2017識(shí)別。
好了,pro介紹完畢,大家可以嘗試一把了。
關(guān)于“K02-01如何通過(guò)簡(jiǎn)單exe介紹pro基本配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文題目:K02-01如何通過(guò)簡(jiǎn)單exe介紹pro基本配置-創(chuàng)新互聯(lián)
地址分享:http://www.chinadenli.net/article44/dighee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、Google、建站公司、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容