Effective Eclipse CDT (二)

Project Configuration

上篇介紹的全局配置會(huì)作為每個(gè)工程的默認(rèn)配置鸯屿,所以像代碼風(fēng)格之類的配置盯质,如果工程沒有特殊需要一般不用再配置。工程屬性里面主要關(guān)注于工程的構(gòu)建選項(xiàng)材彪。只要配置好了各種構(gòu)建參數(shù)沸呐,就可以通過eclipse來構(gòu)建工程午衰,這時(shí)工程代碼也能夠被eclipse正常解析(對(duì)于我個(gè)人悠就,更加喜歡用腳本構(gòu)建站叼,在eclipse里進(jìn)行工程配置主要是為了讓其能夠正確解析代碼)球榆。

新建工程

通過File -> New -> C++ Project來創(chuàng)建一個(gè)新的C\++工程朽肥。如下圖,eclipse支持創(chuàng)建幾種不同類型的工程持钉;

對(duì)上圖中的元素說明如下:

  • Project name : 工程名衡招。

  • Use default location : 勾選此項(xiàng)的話,項(xiàng)目默認(rèn)創(chuàng)建在eclipse workspace目錄下每强;如果不勾選始腾,那么在Location處可以選擇項(xiàng)目位置州刽。如果你已經(jīng)有了項(xiàng)目目錄,想要直接把eclipse工程文件創(chuàng)建在自己的代碼目錄里浪箭,就選擇后者穗椅。

  • Project Type:可以選擇構(gòu)建的工程類型

    • GNU Autotools:該類項(xiàng)目默認(rèn)選擇用GUN Autotools進(jìn)行構(gòu)建管理,eclipse不會(huì)為其自動(dòng)生成makefile山林。在項(xiàng)目的屬性對(duì)話框里面將會(huì)有一個(gè)對(duì)GNU Autotools的配置頁(yè)面房待。

    • Executable:可執(zhí)行項(xiàng)目,eclipse默認(rèn)會(huì)為其生成makefile驼抹。該類工程允許在工程屬性對(duì)話框里面深入配置各種編譯鏈接參數(shù)桑孩,這些配置的修改都會(huì)決定自動(dòng)生成的makefile內(nèi)容。Empty ProjectHello World C++ Project的區(qū)別在于后者會(huì)自動(dòng)為項(xiàng)目創(chuàng)建一個(gè)src目錄以及一個(gè)實(shí)現(xiàn)了輸出“hello world”的cpp文件框冀。

    • Makefile Project:該類工程默認(rèn)用戶使用自定義的makefile流椒,不會(huì)為項(xiàng)目自動(dòng)創(chuàng)建makefile。該類工程的工程屬性對(duì)話框里面默認(rèn)不可以對(duì)編譯明也、鏈接參數(shù)進(jìn)行配置宣虾,它會(huì)使用用戶makefile中的參數(shù)進(jìn)行項(xiàng)目解析。

    • Shared Library:共享庫(kù)工程温数。默認(rèn)項(xiàng)目的構(gòu)建結(jié)果為共享庫(kù)绣硝,在工程屬性里面會(huì)有對(duì)共享庫(kù)的各種構(gòu)建配置選項(xiàng);

    • Static Library:靜態(tài)庫(kù)工程撑刺。默認(rèn)項(xiàng)目的構(gòu)建結(jié)果為靜態(tài)庫(kù)鹉胖,在工程屬性里面會(huì)有對(duì)靜態(tài)庫(kù)的各種構(gòu)建配置選項(xiàng);

  • Toolchains:工具鏈够傍。該對(duì)話框里eclipse會(huì)自動(dòng)識(shí)別系統(tǒng)安裝的工具鏈甫菠。例如如果你安裝了cygwin或者minGW的工具鏈,也會(huì)顯示在這里以供選擇冕屯。如果使用Linux下默認(rèn)的工具鏈寂诱,則選擇Linxu GCC。如果選擇Cross GCC安聘,說明項(xiàng)目是交叉編譯痰洒,那么工程屬性對(duì)話框里面需要進(jìn)行交叉工具鏈的各種配置。

導(dǎo)入工程

如果工程已經(jīng)有了eclipse項(xiàng)目文件搞挣,那么可以直接導(dǎo)入到eclipse中带迟。

選擇File -> import -> General -> Existing Projects info Workspace, 然后下一步囱桨,在接下來的對(duì)話框里面選擇eclipse項(xiàng)目文件所在的目錄,然后確認(rèn)嗅绰,將其導(dǎo)入eclipse中舍肠。

配置工程

對(duì)于創(chuàng)建好的eclipse工程搀继,可以在工程屬性對(duì)話框里對(duì)其進(jìn)行更為詳細(xì)的配置。在Project Explorer視圖里的具體工程上點(diǎn)右鍵翠语,選擇Properties叽躯。

在工程屬性對(duì)話框里面,最為重要的是C/C++ Build以及C/C++ General這兩個(gè)配置集肌括。這兩個(gè)配置集包含所有和工程構(gòu)建相關(guān)的配置点骑。如果你要用eclipse進(jìn)行構(gòu)建,那么這里面的東西就極為重要谍夭,因?yàn)樗鼪Q定了項(xiàng)目能否被正確構(gòu)建黑滴。如果你有自己的構(gòu)建腳本,這里面的東西仍然極為重要紧索,因?yàn)樗鼪Q定了項(xiàng)目代碼能否被eclipse正確解析袁辈!

C/C++ Build配置集

在工程屬性對(duì)話框中選擇C/C++ Build對(duì)構(gòu)建進(jìn)行配置:

  • Configuration: 這里可以設(shè)置構(gòu)建目標(biāo)。Executable類型的工程珠漂,默認(rèn)有DebugRelease兩種構(gòu)建目標(biāo)可以選擇晚缩,Makefile類型的工程只有一個(gè)Default目標(biāo)。你可以分別配置每一類目標(biāo)下的編譯構(gòu)建參數(shù)媳危。每種構(gòu)建目標(biāo)的編譯鏈接參數(shù)一般為了不同目的而配置荞彼。例如一般在Debug目標(biāo)下我們?cè)谂渲镁幾g參數(shù)時(shí)會(huì)選擇不打開優(yōu)化選項(xiàng),但是會(huì)設(shè)置為目標(biāo)文件構(gòu)建debug信息待笑;而Release目標(biāo)的構(gòu)建參數(shù)則選擇不構(gòu)建debug信息鸣皂,但是需要打開對(duì)應(yīng)的編譯優(yōu)化選項(xiàng)。構(gòu)建目標(biāo)后面的[Active]指eclipse默認(rèn)選擇的構(gòu)建配置(當(dāng)按快捷鍵Ctrl + b進(jìn)行構(gòu)建時(shí))滋觉。點(diǎn)擊后面的Manage Configurations...可以對(duì)構(gòu)建目標(biāo)進(jìn)行增加签夭、刪除和修改。如下圖新增了一種構(gòu)建目標(biāo)build椎侠,將其設(shè)為active第租。
  • Builder Settings:

    • Builder type:

      • External builder:選擇可以使用外部構(gòu)建工具進(jìn)行構(gòu)建。選中此選項(xiàng)后我纪,底下就可以進(jìn)行更多的配置慎宾。例如可以將Use default build command的勾去掉,然后將Build command從默認(rèn)的make改為其它自定義工具或者腳本(如果你想使用項(xiàng)目已有的構(gòu)建腳本浅悉,就在此處更改)趟据。另外,可以將Generate Makefiles automatically去掉术健,手動(dòng)填寫構(gòu)建目標(biāo)產(chǎn)物的位置汹碱。如下圖示例,將構(gòu)建命令修改為使用項(xiàng)目根目錄下的build.sh腳本荞估,將構(gòu)建結(jié)果放在項(xiàng)目根目錄下的build目錄下咳促。

        external-build.png

      • Internal type:選擇使用eclipse的默認(rèn)構(gòu)建工具進(jìn)行構(gòu)建稚新,所謂默認(rèn)構(gòu)建工具就是在創(chuàng)建工程時(shí)所選擇的工具鏈。一旦選擇Internal type跪腹,那么底下的選項(xiàng)就不能再修改了褂删。例如下圖選擇Internal type,則eclipse固定使用make進(jìn)行構(gòu)建冲茸,并強(qiáng)制自動(dòng)生成makefile屯阀。

    • Makefile generaton : 配置eclipse是否自動(dòng)產(chǎn)生makefile。如果工程類型是executable轴术,這里默認(rèn)是勾選狀態(tài)难衰;否則默認(rèn)是不勾選的。只有這里勾選了讓eclipse自行產(chǎn)生makefile膳音,工程屬性里面才會(huì)出現(xiàn)配置編譯器召衔、鏈接器參數(shù)的對(duì)話框,否則是看不見的(具體在Project properties -> C/C\\++ Build -> Settings)祭陷。

    • Build location:設(shè)置構(gòu)建產(chǎn)物的位置苍凛。默認(rèn)在工程根目錄下的第一級(jí)子目錄,子目錄的名稱固定和當(dāng)前的Configuration欄所選的構(gòu)建目標(biāo)相同兵志。

  • Behavior : 設(shè)置一些構(gòu)建行為參數(shù)醇蝴。例如編譯錯(cuò)誤是否立即停止;并行編譯選項(xiàng)等等想罕;


  • C/C++ Build -> Settings: 如前面所說悠栓,只有勾選了讓eclipse自行產(chǎn)生makefile,這里面才會(huì)有進(jìn)行編譯按价、鏈接參數(shù)配置的對(duì)話框惭适,否則是看不見的。如下圖:

    可以看到這里可以設(shè)置編譯楼镐、鏈接的各種具體參數(shù)癞志。例如上圖中對(duì)于GCC C++ Compiler設(shè)置的命令名稱是g++All options里面是所有的編譯參數(shù)框产。這里的編譯參數(shù)其實(shí)都是根據(jù)底下的一系列選項(xiàng)設(shè)置匯總過來的凄杯。

    • Dialect里面可以選擇支持的C\++標(biāo)準(zhǔn),支持C\++98秉宿、C\++0x以及C\++1y幾個(gè)選項(xiàng)戒突。
    • Preprocessor里面可以配置傳遞給編譯器的預(yù)編譯參數(shù)。
    • Includes配置頭文件的查找路徑描睦,以及包含特定的頭文件膊存。
    • Optimization配置編譯優(yōu)化選項(xiàng),例如優(yōu)化級(jí)別-O設(shè)置。
    • Debugging配置debug參數(shù)膝舅,例如選擇debug級(jí)別等等嗡载。
    • Warnings配置編譯告警選項(xiàng)窑多。
    • Miscellaneous:其他雜項(xiàng)配置仍稀。例如是否開啟-v-fPIC等埂息。

    如果你會(huì)寫makefile技潘,那么上述所有配置對(duì)你來說是非常輕松的,正確配置了這些參數(shù)后千康,eclipse就可以自動(dòng)為你生成makefile執(zhí)行構(gòu)建了享幽。如果你的項(xiàng)目已經(jīng)有了構(gòu)建腳本,那么你可以參照構(gòu)建腳本來配置這里拾弃。

C/C++ General配置集

如下圖值桩,在工程屬性里面選擇C/C++ General,可以在其子標(biāo)簽頁(yè)中進(jìn)行代碼靜態(tài)檢查豪椿、文件類型奔坟、代碼風(fēng)格等一些配置。由于這些大多在eclipse全局配置中設(shè)置過了搭盾,所以如果工程沒有特殊需求咳秉,這里一般不用更改了。

在這里最重要的一個(gè)配置頁(yè)是Paths and Symbols鸯隅。在此可以設(shè)置頭文件的搜索路徑澜建、預(yù)編譯宏、鏈接庫(kù)搜索路徑蝌以、鏈接庫(kù)名稱等等炕舵。這些設(shè)置關(guān)系著eclipse能否正確構(gòu)建以及解析代碼符號(hào)「可以看到這里的一些配置和前面C/C++ Build -> Settings中編譯咽筋、鏈接參數(shù)的一些配置是重復(fù)的。由于編譯鏈接參數(shù)需要針對(duì)不同的構(gòu)建目標(biāo)分別配置碍彭,容易有重復(fù)晤硕;而且一旦不選擇讓eclipse生成makefile,編譯鏈接參數(shù)配置就不可見庇忌。但是無(wú)論是否讓eclipse生成makefile舞箍,它總要能正確解析代碼的,所以eclipse在這里也提供了類似的配置選項(xiàng)皆疹。

這里Includes疏橄、SymbolsLibrariesLibrary Paths的配置捎迫,和前面編譯鏈接參數(shù)配置一樣晃酒,需要根據(jù)工程的具體構(gòu)建情況去填寫。此處只詳細(xì)說一下Source Location選項(xiàng)窄绒。

如果你的eclipse工程文件就配置在項(xiàng)目代碼目錄里贝次,那么這里一般不用配置。你在代碼目錄里面的目錄變化會(huì)自動(dòng)反映到eclipse中彰导。如果你的工程文件和代碼目錄是分離的蛔翅,那么就需要在這里進(jìn)行目錄關(guān)聯(lián)。

如上圖位谋,在Source Location中點(diǎn)擊Link Folder...山析,然后在彈出的對(duì)話框里面點(diǎn)擊Advanced,勾選Link to folder in the file system掏父,接下來點(diǎn)擊Browse...在文件系統(tǒng)內(nèi)選擇需要關(guān)聯(lián)的目錄笋轨,之后該外部目錄就被映射到eclipse工程內(nèi)了。在此為了讓配置和具體位置無(wú)關(guān)赊淑,可以選擇使用Variables...爵政,例如${PROJECT_LOC}表示當(dāng)前工程的目錄位置,${WORKSPACE_LOC}表示eclipse workspace的目錄位置膏燃。

如上就是工程的所有重要的配置了茂卦。一旦配置正確,eclipse就能幫你執(zhí)行構(gòu)建了∽榱ǎ現(xiàn)實(shí)中一般工程都有構(gòu)建腳本等龙,配置工程屬性主要是為了讓eclipse能夠正確解析代碼,這時(shí)主要配置好C/C++ General -> Paths and Symbols就好了伶贰。如果需要eclipse能夠解析C\++11或者其它的C\++標(biāo)準(zhǔn)的語(yǔ)法和stl庫(kù)符號(hào)蛛砰,那么還需在C/C++ Build -> Settings中配置編譯參數(shù)支持對(duì)應(yīng)的C\++標(biāo)準(zhǔn)。

導(dǎo)出工程配置

配置好的工程構(gòu)建屬性可以導(dǎo)出然后共享給項(xiàng)目其他同事黍衙。

在菜單中選擇File -> Export -> C/C++ -> C/C++ Project Settings泥畅,然后選擇對(duì)應(yīng)的工程,選擇構(gòu)建目標(biāo)琅翻,可以將該工程對(duì)應(yīng)構(gòu)建目標(biāo)下的配置導(dǎo)出成一個(gè)xml文件位仁。這樣別人就可以通過File -> Import -> C/C++ -> C/C++ Project Settings再將其導(dǎo)入了。

Eclipse為每個(gè)工程生成的所有配置其實(shí)都在工程目錄下的.project.cproject文件里方椎。將這兩個(gè)文件共享給別人聂抢,放在相對(duì)于工程代碼相同的位置,通過File -> import -> General -> Existing Projects info Workspace可以直接將eclipse工程導(dǎo)入棠众。


在介紹完eclipse的全局配置和工程配置后琳疏,下一篇我們將詳細(xì)介紹eclipse的高效操作技巧有决!

Effective Eclipse CDT (一)
Effective Eclipse CDT (三)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市空盼,隨后出現(xiàn)的幾起案子书幕,更是在濱河造成了極大的恐慌,老刑警劉巖揽趾,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件台汇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡但骨,警方通過查閱死者的電腦和手機(jī)励七,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奔缠,“玉大人,你說我怎么就攤上這事吼野⌒0ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵瞳步,是天一觀的道長(zhǎng)闷哆。 經(jīng)常有香客問我,道長(zhǎng)单起,這世上最難降的妖魔是什么抱怔? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嘀倒,結(jié)果婚禮上屈留,老公的妹妹穿的比我還像新娘。我一直安慰自己测蘑,他們只是感情好灌危,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碳胳,像睡著了一般勇蝙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挨约,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天味混,我揣著相機(jī)與錄音,去河邊找鬼诫惭。 笑死翁锡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贝攒。 我是一名探鬼主播盗誊,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了哈踱?” 一聲冷哼從身側(cè)響起荒适,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎开镣,沒想到半個(gè)月后刀诬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邪财,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年陕壹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片树埠。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡糠馆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怎憋,到底是詐尸還是另有隱情又碌,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布绊袋,位于F島的核電站毕匀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏癌别。R本人自食惡果不足惜皂岔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望展姐。 院中可真熱鬧躁垛,春花似錦、人聲如沸诞仓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)墅拭。三九已至活玲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谍婉,已是汗流浹背舒憾。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穗熬,地道東北人镀迂。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唤蔗,于是被迫代替她去往敵國(guó)和親探遵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窟赏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,512評(píng)論 25 707
  • Android游戲開發(fā)實(shí)踐(1)之NDK與JNI開發(fā)02 承接上篇Android游戲開發(fā)實(shí)踐(1)之NDK與JNI...
    AlphaGL閱讀 3,740評(píng)論 0 24
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)箱季,斷路器涯穷,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 難得成績(jī)出來我們班的過線人數(shù)是最多的,加油藏雏! 難得今天更加用心的備課拷况,及時(shí)寫出課后反思,為以后留下上課的心得體會(huì)掘殴。...
    鬧鬧小乖乖閱讀 132評(píng)論 0 0