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 Project
和Hello 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)有
Debug
和Release
兩種構(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目錄下咳促。
-
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
疏橄、Symbols
、Libraries
、Library 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的高效操作技巧有决!