轉(zhuǎn)帖|使用教程|編輯:況魚杰|2020-11-05 16:03:01.073|閱讀 749 次
概述:本文介紹了PC-lint Plus的使用方法:makefile的介紹。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
PC-lint Plus是一種靜態(tài)分析工具,通過分析C和C ++源代碼來發(fā)現(xiàn)軟件中的缺陷。與編譯器一樣,PC-lint Plus會(huì)解析源代碼文件,執(zhí)行語義分析,并構(gòu)建一個(gè)抽象語法樹來表示程序。PC-lint Plus采用各種機(jī)制,包括數(shù)據(jù)流分析,數(shù)值跟蹤,讀寫分析,強(qiáng)類型檢查,功能語義驗(yàn)證和許多其他技術(shù),來提供對(duì)單個(gè)文件和整個(gè)項(xiàng)目強(qiáng)大而全面的分析。
本文介紹了PC-lint Plus的使用方法:makefile的介紹。
Makefile基本結(jié)構(gòu)
makefile中一般包含如下內(nèi)容:
*?需要由?make?工具創(chuàng)建的項(xiàng)目,通常是目標(biāo)文件和可執(zhí)行文件。通常使用“目標(biāo)(target)”一詞來表示要?jiǎng)?chuàng)建的項(xiàng)目。
*?要?jiǎng)?chuàng)建的項(xiàng)目依賴于哪些文件。
*?創(chuàng)建每個(gè)項(xiàng)目時(shí)需要運(yùn)行的命令。
例如,假設(shè)你現(xiàn)在有一個(gè)?C/C++?源文件?test.C,該源文件包含有自定義的頭文件?test.h,則目標(biāo)文件?test.o?明確依賴于兩個(gè)源文件:test.C?和?test.h。另外,你可能只希望利用?g++?命令來生成?test.o?目標(biāo)文件。這時(shí),就可以利用如下的?makefile?來定義?test.o?的創(chuàng)建規(guī)則:
#?This?makefile?just?is?a?example.? #?The?following?lines?indicate?how?test.o?depends? #?test.C?and?test.h,?and?how?to?create?test.o?? test.o:?test.C?test.h????? g++?-c?-g?test.C??
從上面的例子注意到,第一個(gè)字符為?#?的行為注釋行。第一個(gè)非注釋行指定?test.o?為目標(biāo),并且依賴于?test.C?和?test.h?文件。隨后的行指定了如何從目標(biāo)所依賴的文件建立目標(biāo)。
當(dāng)?test.C?或?test.h?文件在編譯之后又被修改,則?make?工具可自動(dòng)重新編譯?test.o,如果在前后兩次編譯之間,test.C?和?test.h?均沒有被修改,而且?test.o?還存在的話,就沒有必要重新編譯。這種依賴關(guān)系在多源文件的程序編譯中尤其重要。通過這種依賴關(guān)系的定義,make?工具可避免許多不必要的編譯工作。當(dāng)然,利用?Shell?腳本也可以達(dá)到自動(dòng)編譯的效果,但是,Shell?腳本將全部編譯任何源文件,包括哪些不必要重新編譯的源文件,而?make?工具則可根據(jù)目標(biāo)上一次編譯的時(shí)間和目標(biāo)所依賴的源文件的更新時(shí)間而自動(dòng)判斷應(yīng)當(dāng)編譯哪個(gè)源文件。
一個(gè)?makefile?文件中可定義多個(gè)目標(biāo),利用?make?target?命令可指定要編譯的目標(biāo),如果不指定目標(biāo),則使用第一個(gè)目標(biāo)。通常,makefile?中定義有?clean?目標(biāo),可用來清除編譯過程中的中間文件,例如:
clean:
rm?-f?*.o
運(yùn)行?make?clean?時(shí),將執(zhí)行?rm?-f?*.o?命令,最終刪除所有編譯過程中產(chǎn)生的所有中間文件。
makefile?變量
GNU?的?make?工具除提供有建立目標(biāo)的基本功能之外,還有許多便于表達(dá)依賴性關(guān)系以及建立目標(biāo)的命令的特色。其中之一就是變量或宏的定義能力。如果你要以相同的編譯選項(xiàng)同時(shí)編譯十幾個(gè)?C?源文件,而為每個(gè)目標(biāo)的編譯指定冗長的編譯選項(xiàng)的話,將是非常乏味的。但利用簡單的變量定義,可避免這種乏味的工作:
#?Define?macros?for?name?of?compiler? CC?=?gcc?? #?Define?a?macr?o?for?the?CC?flags? CCFLAGS?=?-D_DEBUG?-g?-m486?? #?A?rule?for?building?a?object?file? test.o:?test.c?test.h????? $(CC)?-c?$(CCFLAGS)?test.c??
在上面的例子中,CC?和?CCFLAGS?就是?make?的變量。GNU?make?通常稱之為變量,而其他?UNIX?的?make?工具稱之為宏,實(shí)際是同一個(gè)東西。在?makefile?中引用變量的值時(shí),只需變量名之前添加?$?符號(hào),如上面的?$(CC)?和?$(CCFLAGS)。
本文內(nèi)容就是這樣了,希望對(duì)您有所幫助!您可以繼續(xù)關(guān)注我們慧都網(wǎng),了解更多產(chǎn)品資訊~也可以下載PC-lint Plus試用版免費(fèi)評(píng)估~
相關(guān)內(nèi)容推薦:
PC-lint Plus v1.3.5更新內(nèi)容>>>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn