一個(gè)通用Makefile的編寫-基礎(chǔ)電子_第1頁
一個(gè)通用Makefile的編寫-基礎(chǔ)電子_第2頁
一個(gè)通用Makefile的編寫-基礎(chǔ)電子_第3頁
一個(gè)通用Makefile的編寫-基礎(chǔ)電子_第4頁
一個(gè)通用Makefile的編寫-基礎(chǔ)電子_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

精品文檔-下載后可編輯一個(gè)通用Makefile的編寫-基礎(chǔ)電子作者:楊碩,華清遠(yuǎn)見嵌入式學(xué)院講師。

現(xiàn)在我們講使用數(shù)據(jù)庫來進(jìn)行變成,具體的提供了SELECTINSERTUPDATEDELETE等數(shù)據(jù)庫的執(zhí)行語句,這是在數(shù)據(jù)庫的接口,當(dāng)在圖形下顯示數(shù)據(jù)時(shí)需要使用到QSQLTableModel。所以在數(shù)據(jù)庫編程之前需要掌握基礎(chǔ)的SQL命令語句。

數(shù)據(jù)庫驅(qū)動(dòng)層

相關(guān)聯(lián)的類包含了QSqlDriver,QSqlDriverCreatpor,QSqlDriverCreatorBase,QSqlDriverPlugin與QSqlResult。

數(shù)據(jù)庫的應(yīng)用程序接口層

這些類提供了訪問數(shù)據(jù)庫,提出一個(gè)連接請(qǐng)求,如同文件訪問一樣,當(dāng)連接成功,講通過判斷信息返回信息,只要建立了連接就可以使用QSqlQuery類來操作數(shù)據(jù)庫,在連接數(shù)據(jù)庫之后還提供了幾個(gè)類,例如QSqlError,QSqlField,QSqlIndex與QSqlRecord。

用戶接口層

這些類提供了與數(shù)據(jù)相關(guān)的部件,包含了QSqlQueryModel,QSqlTableModel,與QSqlRelationTableModel。這些類的定義使用是用來提供數(shù)據(jù)庫的模式與試圖來設(shè)計(jì)的。

連接到數(shù)據(jù)庫

如果要建立一個(gè)數(shù)據(jù)庫的連接,首先要知道使用的什么數(shù)據(jù)庫,并為這個(gè)數(shù)據(jù)庫的連接加載驅(qū)動(dòng),如果是mysql數(shù)據(jù)庫,都會(huì)有用戶名與密碼,這也是必須設(shè)置的,被連接的數(shù)據(jù)庫或許在本地或者在遠(yuǎn)程的某臺(tái)計(jì)算機(jī)上,所以需要設(shè)置一個(gè)主機(jī)的名稱來區(qū)別。

下面是連接數(shù)據(jù)庫的例子:

QSqlDatabasedb=QSqlDatabase::addDatabase("QMYSQL");

db.setHostName("bigblue");

db.setDatabaseName("flightdb");

db.setUserName("acarlson");

db.setPassword("1uTbSbAs");

boolk=db.open();

我們?cè)贚inux環(huán)境下開發(fā)程序,少不了要自己編寫Makefile,一個(gè)稍微大一些的工程下面都會(huì)包含很多.c的源文件。如果我們用gcc去一個(gè)一個(gè)編譯每一個(gè)源文件的話,效率會(huì)低很多,但是如果我們可以寫一個(gè)Makefile,那么只需要執(zhí)行一個(gè)make就OK了,這樣大大提高了開發(fā)效率。但是Makefile的語法規(guī)則眾多,而且缺乏參考資料,對(duì)于初學(xué)者來說,寫起來還是有一定的難度,往往令很多人望而生畏。下面我們介紹一個(gè)比較通用而且簡(jiǎn)潔的Makefile,大家只要對(duì)它稍作修改就可以用在你們自己的工程里了。

現(xiàn)在假設(shè)我們有一個(gè)工程叫my_project,工程源碼目錄下面有app1.c,app2.c,app3.c以及main.c這五個(gè)源文件。我們現(xiàn)在需要編譯出app1.o,app2.o,app3.o以及main.o,然后再把這些.o文件鏈接成為一個(gè)ELF格式的可執(zhí)行程序叫做my_app。我們先看一個(gè)簡(jiǎn)單的Makefile如何編寫:

my_app:main.o,app1.o,app2.o,app3.o,app4.o

gcc–omy_appmain.oapp1.o,app2.o,app3.o,app4.o

main.o:main.c

gcc–cmain.c

app1.o:app1.c

gcc–capp1.c

app2.o:app2.c

gcc–capp2.c

app3.o:app3.c

gcc–capp3.c

clean:

rmmain.oapp1.o,app2.o,app3.o,app4.o

這是一個(gè)傻瓜式的Makefile,不靈活,而且不具備可復(fù)制性,想象一個(gè)如果我們的工程下面有50個(gè)源文件,那豈不是要一個(gè)一個(gè)寫出來。我們的目標(biāo)是寫一個(gè)Makefile,只要稍作修改就可以在各個(gè)工程之間通用。

下面這個(gè)Makefile就可以滿足這個(gè)要求:

SRCS=$(wildcard*.c)

BJS=$(SRCS:.c=.o)

CC=gcc

INCLUDES=-I/home/noah/build_sqlite3/include

LIBS=-L/home/noah/build_sqlite3/lib-lsqlite3

CCFLAGS=-g-Wall-O0

my_app:$(OBJS)

$(CC)$^-o$@$(INCLUDES)$(LIBS)

%.o:%.c

$(CC)-c$$(CCFLAGS)

clean:

rm*.o

大家看這個(gè)Makefile和前一個(gè)比起來是不是簡(jiǎn)潔很多,當(dāng)然理解起來不如上一個(gè)那么直觀。實(shí)際上編寫Makefile就是為了提高我們的工作效率,而不是增加我們的工作量。因此Makefile為我們提供了很多強(qiáng)大的功能,比如定義變量,使用通配符等等。只要合理利用,就可以達(dá)到事半功倍的效果。

下面我們一條一條分析這個(gè)Makefile:

SRCS=$(wildcard*.c)

這條語句定義了一個(gè)變量SRCS,它的值就是當(dāng)前面目錄下面所有的以.c結(jié)尾的源文件。

BJS=$(SRCS:.c=.o)

這里變量OBJS的值就是將SRCS里面所有.c文件編譯出的.o目標(biāo)文件

CC=gcc

變量CC代表我們要使用的編譯器

INCLUDES=-I/home/noah/build_sqlite3/include

LIBS=-L/home/noah/build_sqlite3/lib-lsqlite3

這里指定除了編譯器默認(rèn)的頭文件和庫文件的路徑之外需要額外引用的頭文件路徑以及庫的路徑。

CCFLAGS=-g-Wall-O0

CCFLAGS變量存放的是編譯選項(xiàng)

my_app:$(OBJS)

$(CC)$^-o$@$(INCLUDES)$(LIBS)

my_app依賴于所有的.o文件,$^代表$(OBJS),$@代表my_app

%.o:%.c

$(CC)-c$$(CCFLAGS)

將所有的.c源代碼編譯成.o目標(biāo)文件,這樣寫是不是很省事?

clean:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論