windows eclipse cdt 环境搭配

http://www.iteye.com/topic/560534


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



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 cdt 环境搭配_第1张图片

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 cdt 环境搭配_第2张图片

OK,安装部分就完成了。下面写2个小例子。

7. 首先创建一个简单的HelloWorld C++工程,这个很简单,按Wizard向导建一个模板即可。
windows eclipse cdt 环境搭配_第3张图片

Run的时候选Run Configurations, 然后双击C/C++ application建一个新的run configuration就行。
windows eclipse cdt 环境搭配_第4张图片

8. 下面建一个Makefile类型的工程。选择New C++ Project -> Makefile project -> Empty Project, 我们建一个空的项目,建完后里面什么也没有(除了2个.project文件),这时,我们要建一个源文件和一个make文件:main.cpp 和 makefile,如下,都建到根目录下:
windows eclipse cdt 环境搭配_第5张图片

C++代码   收藏代码
  1. /* 
  2.  * main.cpp 
  3.  */  
  4.   
  5. #include <iostream>  
  6. using namespace std;  
  7.   
  8. int main () {  
  9.     // Say Hello five times  
  10.     for (int index = 0; index < 5; ++index)  
  11.       cout << "HelloWorld!" << endl;  
  12.     char input = 'i';  
  13.     cout << "To exit, press 'm'" << endl;  
  14.     while(input != 'm') {  
  15.         cin  >> input;  
  16.         cout << "You just entered " << input  
  17.              << " you need to enter m to exit." << endl;  
  18.     }  
  19.     exit(0);  
  20. }  

Makefile代码   收藏代码
  1. all: hello.exe  
  2.   
  3. clean:  
  4.     rm main.o hello.exe  
  5.   
  6. hello.exe: main.o  
  7.     g++ -g -o hello main.o  
  8.   
  9. main.o:  
  10.     g++ -c -g main.cpp  

注意,makefile里的行首缩进用的是Tab而不是空格。如果编译时提示 No separator...就是这里有问题。

9. Ok, 选中工程,点Build(或点那个小锤子),你会发现这个错误:(Cannot run program "make": Launching failed),啊,我们的make.exe还没设。选中工程,直接Alt-Enter到工程属性页,把msys的bin加到Path里。
windows eclipse cdt 环境搭配_第6张图片

10. 重新build, 大功告成。



ADD:Froming  http://blog.csdn.net/yahohi/article/details/7325591

关于socket相关API编译错误的问题。


今天搭建了一个Eclipse+MinGW的C++开发环境,Eclipse的使用就是方便。
于是,就写了一个socket程序,MinGW支持winsock2,但到编译的时候总是报错:
undefined reference to `inet_addr@4'
undefined reference to `gethostbyname@4'
undefined reference to `WSAGetLastError@0'
undefined reference to `inet_ntoa@4'
undefined reference to `WSAStartup@8'
undefined reference to `inet_ntoa@4'
undefined reference to `socket@12'
undefined reference to `htons@4'
undefined reference to `bind@12'
undefined reference to `listen@8'
undefined reference to `accept@12'
undefined reference to `recv@16'
undefined reference to `send@16'
undefined reference to `shutdown@8'
undefined reference to `closesocket@4'
undefined reference to `closesocket@4'
undefined reference to `WSACleanup@0'
这错一看,要么是程序没有加载winsock2.h库,要么是程序make的时候出错。
检查console连接结果,发现确实是缺少socket的链接参数:-lws2_32.
在eclipse中添加make参数的方法:
右键工程 -> properties -> C++ build -> settings -> Tool Settings
在左边树形结构中选中 MinGW C++ Linker,此时在右边的command line pattern就是make时的参数设置,在后面加上-lws2_32就可以了。
再编译,成功了。
设置的截图如下:
windows eclipse cdt 环境搭配_第7张图片




///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

附编译live555库 (转自他人,为防止忘记,特记于此)

是一个eclipse使用入门教程.


live555使用makefile管理项目,当需要自己添加源码文件时,很麻烦,需要自己修改各文件间的依赖关系.其实我们可以很容易地将live555移植成eclipse自己的c++工程.这样可以让eclipse自动管理文件之间的关系.

编译环境是在windows下的Mingw.安装mingw同时会安装MSYS,MSYS是一个命令行程序.要用mingw编译程序,需在MSYS命令行中执行类似:./configure,make之类的命令.

官网:http://www.mingw.org/

安装程序下载地址:http://sourceforge.net/projects/mingw/files/latest/download?source=files

去http://sourceforge.net/projects/mingw/files/latest/download?source=files下载安装程序: mingw-get-inst-20111118.exe

运行后会自动从网上下载并安装所需文件.

安装完成后(一般装在C盘),会在桌面上找到msys.bat之类的文件,就是MSys命令行了,运行之即可.

比如你有一个makefile项目在d:/aaa/ 下,一般需执行如下命令编译:

cd /d/aaa

./configure

make

下面详细讲解eclipse的使用.

首先移植live555中mediaServer工程

  • 打开eclipse
  • 菜单File->New->c++ project
  • 弹出c++ project对话框
  • 在project name中填入:mediaServer
  • 在project type树控件中选择excutable->Emptyproject,在Toolchains中选择MinGW GCC
  • 在Location中可以选择工程所在的路径,比如d:/workspace 
  • 按下finish按钮

此时就会自动创建出工程,例如位于d:/workspace/mediaServer下,把live555/mediaServer目录下的全部源码文件(*.c,*.cpp,*.h,*.hh)复制到d:/workspace/mediaServer下,然后在eclipse中,左边的ProjectExplorer中项目mediaServer上弹出右键菜单,选择Refresh菜单项,就会把我们copy来的文件自动加入项目中.

现在可以编译了.选择菜单Project->Build All,就会开始编译,但不能成功.因为我们还依赖好几个库.


下面再建立那些库的工程,全部为静态库.建立过程与mediaServer类似,但是在projecttype中选择staticlibrary->Empty Project.Toolchains还是MinGW GCC.

分别建立BasicUsageEnvironment,UsageEnvironment,Groupsock,liveMedia四个静态库工程,都位于d:/workspace/mediaServer下,把live555中的对应目录下的文件复制到各种工程目录下,刷新.这样工程就全部建立完毕.

但是,现在编译任何一个库也都是不能通过的,因为它们是互想使用彼此的头文件的.所以在每个项目的设置中需要设置include路径.比如groupsock库使用了UsageEnvironment的头文件,就需要将UsageEnvironment的路径设置给groupsock.设置过程如下:

  • 在Project Exporer中选择groupsock项目
  • 弹出右键菜单
  • 选择Properties项
  • 弹出工程设置对话框
  • 左边树控件中选择c/c++ Build->Settings
  • 在Tool Settings 页中选择GCC C++Comiler->Includes
  • 出现Include path (-I)界面,靠右有带小+号的图标按钮,击之
  • 出现Add dictionary path对话框
  • 选择workspace
  • 出现Folder selection对话框
  • 选择UsageEnvironment->include (UsageEnvironment把头文件另放在include目录下了).
  • 点OK.

现在编译groupsock就能通过了.

其余各库之间的头文件引用问题都以上述方式解决即可.

然而,编译mediaServer时还是通不过,因为找不到要链接的库.

下面就来解决这个问题:

  • 在Project Explorer中选择mediaServer项目,弹出右键菜单
  • 选择Properties菜单项
  • 弹出Properties for mediaServer对话框.
  • 在左边树控件中选择c/c++ build->settings
  • 在右边选择Tool Settings页
  • 在树控件中选择Mingw C++ Linker->Libraries
  • 在右边Libraries (-l)行选择带+号的按钮
  • 在弹出的对话框中输入groupsock
  • 重复上面的动作,把mediaServer依赖的静态库都添加进去.
  • 在右下边的Libraries Search Path (-L)行也选择+号按钮.
  • 弹出Add Directory path对话框.
  • 在其中点击workspace按钮
  • 在弹出的对话框中选择groupSock->Debug
  • 点OK,对话框关闭,进入Add Directorypath对话框
  • 点OK.即添加一个库路径.
  • 重复添加其余库的路径.

完成收功.


你可能感兴趣的:(windows eclipse cdt 环境搭配)