講述在LINUX里進(jìn)行C++環(huán)境的搭建
C++是從C語言發(fā)展演變而來的,首先是一個(gè)更好的C,于1998年11月被國際標(biāo)準(zhǔn)化組織(ISO)批準(zhǔn)為國際標(biāo)準(zhǔn),成為目前的C++要在eclipse下搭建C++環(huán)境,需要下載的安裝包。
1.Eclipse IDE for C/C++ Developers,就是CDT。eclipse一開始應(yīng)該是為java開發(fā)設(shè)計(jì),后來為C++開發(fā)弄了一個(gè)特別版,就是CDT。
2.JRE(java運(yùn)行環(huán)境)或者JDK(java開發(fā)包,包含JRE,稍微大一點(diǎn))。eclipse本身使用java寫的,java寫的程序需要java虛擬機(jī)才能執(zhí)行,所以要下JRE。
3.MinGW32編譯器。Eclipse自己不自帶C++編譯器,所以需要提供一個(gè)編譯器。eclipse支持很多C++編譯器,根據(jù)自己喜好選一個(gè)就行。裝編譯器的時(shí)候,注意添加相應(yīng)的環(huán)境變量到操作系統(tǒng)中,要不eclipse不知道你裝了。
需要下載的東西就是這些。CDT不用安裝,解壓就行。一個(gè)C++環(huán)境需要:文本編輯器,編譯器,調(diào)試器,生成makefile的工具等。文本編輯器由eclipse提供了;
編譯器和調(diào)試器由MinGW32提供了;#t#
makefile文件是用來告訴編譯器你寫的這么多.h文件和.cpp文件應(yīng)該怎么被編譯器編譯。比如,頭文件在哪里,源文件在哪里,怎么連接相應(yīng)的函數(shù)庫等。eclipse不能為你自動(dòng)生成makefile。自己寫makefile則比較麻煩。
有很多生成makefile文件的工具,cmake就是其中一種。MinGW32好像就提夠了cmake(我的MinGW32是從內(nèi)部網(wǎng)絡(luò)下的,不知道其中cmake是別人加的,還是MinGW32自帶的,如果系統(tǒng)中沒有cmake,去網(wǎng)上下一個(gè)就好了)。
相比于visual studio,配置eclipse下的C++開發(fā)環(huán)境稍微麻煩一下。vs有點(diǎn)封閉,什么都為你搭建好了;eclipse則相對(duì)麻煩一點(diǎn)。新建一個(gè)C++工程的一個(gè)簡單流程:
1.打開eclipse的新建向?qū)А9こ填愋停嚎展こ獭oolChain:Other toolchain。
2.設(shè)置一下工程屬性。選擇合適的binary parser。因?yàn)樽约哼x擇的編譯器,修改build commond(編譯命令)
3.寫代碼。
4.在工程目錄下新建一個(gè)CMakeLists.txt文件。針對(duì)自己的工程寫一個(gè)CMakeLists.txt文件。
5.打開命令行,用cmake命令編譯這個(gè)CMakeLists.txt文件,產(chǎn)生自己工程對(duì)應(yīng)的makefile文件
6.現(xiàn)在可以通過eclipse上的按鈕來編譯,運(yùn)行,調(diào)試自己剛剛寫的工程了。
構(gòu)造函數(shù)相關(guān)的問題
1.當(dāng)你自己定義了Foo(int i)之后,編譯器是不會(huì)再給你生成Foo()的。
這一點(diǎn)在涉及到STL時(shí)可能會(huì)有幫助,因?yàn)橛行㏒TL的模板是需要默認(rèn)構(gòu)造函數(shù)的。
STL
1.有些STL的模板需要提供大小比較。
三、new
1. new和delete是關(guān)鍵字;operator new是個(gè)函數(shù)。兩者是不同的。C++環(huán)境有兩個(gè)作用,比如new Foo,首先調(diào)用operator new分配空間;然后調(diào)用Foo的構(gòu)造函數(shù)。
1.通過QDir創(chuàng)建目錄
任何一個(gè)QDir對(duì)象都可以用mkpath()創(chuàng)建目錄,不管它的existis()方法返回的是真是假。如果傳給mkpath()的參數(shù)是絕對(duì)路徑,那么根據(jù)這個(gè)絕對(duì)路徑來創(chuàng)建;如果給的是相對(duì)路徑,且QDir對(duì)象的exists()返回為假,那么mkpath()方法會(huì)把所有相關(guān)的目錄都給創(chuàng)建出來。如果路徑已經(jīng)存在,什么都不做,但是mkpath()的返回值仍然是true。

















