Windows下用Eclipse搭建C/C++開發環境

jopen 10年前發布 | 18K 次閱讀 Eclipse C/C++開發
Windows下C/C++的IDE有很多,要學習Eclipse,所以就選下面要講的Eclipse + GNU toolchain(話說toolchain這個詞很形象). 

1. 首先下載Eclipse for C++, 最新版是基于Eclipse 3.5.1的,叫做galileo(伽利略),上個版本3.4叫做ganymede(木衛三)。下載地址:http://eclipse.org /downloads/,選擇32bit for windows,文件名叫 eclipse-cpp-galileo-SR1-win32.zip 

Windows下用Eclipse搭建C/C++開發環境

2. 解壓,直接運行。注意,至少JDK你已經安裝了(我用的是JDK1.6)。運行后一個灰藍色的welcome頁面出現,進入Tutorials。學東西先讀Tutorial是個好習慣。 

3. 首先了解一下什么是CDT,就是 C/C++ Development Toolkit,bulabula... 然后它說,這個東西沒包含C/C++的編譯器、調試器,你得自己弄。 

4. 那就繼續看。Windows下,MinGW和Cygwin 是獲取GNU toolchain的2種主要方式(GNU toolchain,GNU下一系列的工具包,我的理解主要是gcc這一系列工具)。這兩者最大的區別是MinGW使用Windows C的運行庫,叫做mscvrt,而Cygwin使用了一組基于GPL的DLLs(GPL協議具有傳染性,使用GPL協議下的軟件后你自己開發的東西也要遵 守GPL協議),因此MinGW避開了GPL協議。 

5. MinGW和CDT能很好的整合。好吧,我們裝MinGW(MinGW是Minimal GNU for Windows的意思,這個下載過程相當慢,我下了大半個小時)。當前版本是MinGW-5.1.6.exe,我一股腦來了個Full install。裝完后才發現這么一句:Do not install the MinGW Make feature as the MSYS version of make from step 5 is a more complete implementation of make.(不要安裝MinGW的Make, 第5步的MSYS是個更好的實現方案) 

6. 為了避免將來可能遇到的問題,卸了重裝。這里是完整的安裝步驟: 
1)下載MinGW,地址 http://sourceforge.net/projects/mingw/files/ 
2)安裝MinGW base tool和g++編譯器(不要安裝Make);我把除了Make之外的都裝了,里面居然還有個Ada的編譯器 
Windows下用Eclipse搭建C/C++開發環境  

3)當前版本(它是指MinGW-5.1.3,不過我下的5.1.6同樣也沒有)沒有裝gdb debugger, 下載它:http://downloads.sourceforge.net/mingw/gdb-6.6.tar.bz2 
4)解壓gdb-6.6.tar.bz2 到你安裝MinGW的地方,gdb-6.6/下也有一系列bin,inclue文件夾,直接拷到MinGW下面覆蓋進去即可 
5)如果要用Makefile,請下載 MSYS-1.0.10.exe,MSYS是make及命令行的一個實現。嗯,要用。下載地址 http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe 
安裝界面是個命令界面,寫2個”y”,然后告知MinGW的安裝路徑即可。 
Windows下用Eclipse搭建C/C++開發環境  

OK,安裝部分就完成了。下面寫2個小例子。 

7. 首先創建一個簡單的HelloWorld C++工程,這個很簡單,按Wizard向導建一個模板即可。 
Windows下用Eclipse搭建C/C++開發環境  

Run的時候選Run Configurations, 然后雙擊C/C++ application建一個新的run configuration就行。 
Windows下用Eclipse搭建C/C++開發環境

8. 下面建一個Makefile類型的工程。選擇New C++ Project -> Makefile project -> Empty Project, 我們建一個空的項目,建完后里面什么也沒有(除了2個.project文件),這時,我們要建一個源文件和一個make文件:main.cpp 和    makefile,如下,都建到根目錄下: 
Windows下用Eclipse搭建C/C++開發環境  
C++代碼   
</div>

<ol start="1" class="dp-cpp" style="font-size:1em;line-height:1.4em;margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:2px;padding-right:0px;padding-bottom:2px;padding-left:0px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:#d1d7dc;border-right-color:#d1d7dc;border-bottom-color:#d1d7dc;border-left-color:#d1d7dc;list-style-position:initial;color:#2b91af;">
 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;"><span class="comment" style="color:#008200;">/*</span> </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;"><span class="comment" style="color:#008200;"> * main.cpp</span> </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;"><span class="comment" style="color:#008200;"> */</span>  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;"><span class="preprocessor" style="color:gray;">#include <iostream></iostream></span>  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;"><span class="keyword" style="color:#7f0055;font-weight:bold;">using</span> <span class="keyword" style="color:#7f0055;font-weight:bold;">namespace</span> std;  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;"><span class="datatypes" style="color:#2e8b57;font-weight:bold;">int</span> main () {  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    <span class="comment" style="color:#008200;">// Say Hello five times</span>  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    <span class="keyword" style="color:#7f0055;font-weight:bold;">for</span> (<span class="datatypes" style="color:#2e8b57;font-weight:bold;">int</span> index = 0; index < 5; ++index)  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">      cout << <span class="string" style="color:blue;">"HelloWorld!"</span> << endl;  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    <span class="datatypes" style="color:#2e8b57;font-weight:bold;">char</span> input = <span class="string" style="color:blue;">'i'</span>;  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    cout << <span class="string" style="color:blue;">"To exit, press 'm'"</span> << endl;  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    <span class="keyword" style="color:#7f0055;font-weight:bold;">while</span>(input != <span class="string" style="color:blue;">'m'</span>) {  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">        cin  >> input;  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">        cout << <span class="string" style="color:blue;">"You just entered "</span> << input  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">             << <span class="string" style="color:blue;">" you need to enter m to exit."</span> << endl;  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    }  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    exit(0);  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">}  </span></li>

</ol>

</div>


Makefile代碼   
</div>

<ol start="1" class="dp-default" style="font-size:1em;line-height:1.4em;margin-top:0px;margin-right:0px;margin-bottom:1px;margin-left:0px;padding-top:2px;padding-right:0px;padding-bottom:2px;padding-left:0px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:#d1d7dc;border-right-color:#d1d7dc;border-bottom-color:#d1d7dc;border-left-color:#d1d7dc;list-style-position:initial;color:#2b91af;">
 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">all: hello.exe  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">clean:  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    rm main.o hello.exe  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">hello.exe: main.o  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    g++ -g -o hello main.o  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">main.o:  </span></li>

 <li style="font-size:1em;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:38px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:10px;border-left-width:1px;border-left-style:solid;border-left-color:#d1d7dc;background-color:#fafafa;line-height:18px;"> <span style="color:black;">    g++ -c -g main.cpp  </span></li>

</ol>

</div>


注意,makefile里的行首縮進用的是Tab而不是空格。如果編譯時提示 No separator...就是這里有問題。  


9. Ok, 選中工程,點Build(或點那個小錘子),你會發現這個錯誤:(Cannot run program "make": Launching failed),啊,我們的make.exe還沒設。選中工程,直接Alt-Enter到工程屬性頁,把msys的bin加到Path里。 

 


10. 重新build, 大功告成。 </div>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!