在C/C++项目中有时候会需要在一个项目中包含多个main函数。在Visual Studio中,这种情况可以由一个解决方案下带多个项目来解决,但在Eclipse CDT中没有解决方案这样的概念。其实通过定制的Makefile,Eclipse CDT也可以很容易达到目的,对于习惯了Makefile的程序员来说可能觉得这样反而更灵活。默认情况下,Eclipse CDT会为项目的Debug和Release配置都自动产生makefile,而且这个自动产生的makefile是会尝试把所有源文件编译并生成单独的一个以项目名命令的二进制文件。而如果你的项目有两个以上的文件带有main函数,Eclipse就会报错:

multiple definition of `main’

既然Eclipse也是通过makefile来,那么一定通过能自己修改或创建makefile的方法让Eclipse知道哪些时候该敢什么,而不是不按你的意图做事。通过一番尝试,我找到了可行之道。下面以一个简单的例子来说明怎么在Eclipse里面随心所欲的使用makefile。

假设我们有一个很简单的C/S结构的项目,包含客户端和服务端这两个需要编译的目标。现在你已经写好了代码:tcp_server.cpp, tcp_client.cpp。那么Let’s do it now!

第一步,在项目的Properties中定位到”C/C++ Build”,在右边的面板中点击”Manage Configurations…”,随后选择”New…”新建一个配置(图1),取名MyDebug并从已有的Debug配置复制(图2)。之后回到图1的窗口,在顶部下拉菜单中选择MyDebug。”Makefile generation”区域有一个选项”Generate Makefiles automatically”,因为我们要自己编写,所以去掉勾选。随后可选择性的编辑”Build directory”,为简单起见,建议设为项目所在的根目录,需要注意的是这个必须是你存放Makefile的路径。

第二步,编写Makefile,注意要放在上面所设置的路径下,还要注意如果不在代码文件同一目录,需要在Makefile中用”..”操作符跳转路径。我在这个例子中使用的Makefile如下:

第三步,编译项目。如果有选择”Build Automatically”就不用操心了,Eclipse会根据你的Makefile工作,并且不会再出现多个main函数的错误。否则,点击工具栏上的Build标志旁边下拉按钮并选择MyDebug,这样Eclipse会找到Makefile中定义的第一个target也就是all来分别编译两个对象。另外,如果想单独编译其中某个target,可选择Project菜单 – Make Target – Build… – Add… 名字取与Makefile中相同的target名,比如tcp_client。而后选中刚创建的target,点击Build就可以了。

注意: Eclipse for C/C++默认安装后自己有个Makefile builder 内建的叫CDT Internal Builder
如果你用的是这个默认的Builder的话, “Makefile Generation”为灰色的选项(不可选)

当然你也可以换一个Builder  Project->Propertis->C/C++ Builder->Tool Chain Editor->currunt builder 中选取其他的Builder 比如:GNU Make Builder 作为一个 External Builder
该选项就可以选者了

Source: http://hi.baidu.com/whn_arthur/blog/item/7bc52d19cc5d1a66dab4bd93.html

在Eclipse CDT中编译含有多个main函数的项目 在C/C++项目中有时候会需要在一个项目中包含多个main函数。在Visual Studio中,这种情况可以由一个解决方案下带多个项目来解决,但在Eclipse CDT中没有解决方案这样的概念。其实通过定制的Makefile,Eclipse CDT也可以很容易达到目的,对于习惯了Makefile的程序员来说可能觉得这样反而更
最近在杭电ACM上做题,使用的C++工具是 Eclipse ,但是 Eclipse CDT 不能同时存在 多个 main 函数 的文件,上网也搜了很多资料,但是按他们的步骤来,还是不能实现自己想要的效果。经过一下午的奋斗,终于弄出来了,现在和大家分享,一起共勉. 关于如何搭建 Eclipse CDT 的开发环境,就不在这里说了。我用的环境是Windows 7系统! 第一...
main (1)和 main (2) 这两个 main 函数 都有运行,你可以在console界面看到一个 点击类似于小电视的那个按钮就可以切换两个控制台,两个 main 函数 都在运行 或者在debug状态下可以看到有两个 main 函数 在运行 但是同一个 main 函数 一般不可以连续运行两次,要不然第二次运行会报错,处理方式可以点击 的红色按钮把进程都关掉 是准备将在 eclipse 搭建 c/C++ 开发环境的事情放在后面的, 无奈还是没忍住,今天一不小心就把这事儿给办了~ eclipse 是如此之优秀,我简直深陷其 无法自拔, 现在,java,actionScript,c/C++,python 这些编程语言我都能够在 eclipse 进行开发了。 现在的心情,毫无疑问是非常之舒畅的。 至于 o...
问题:原来有单个文件tcpclient.c,运行gcc -o tcpclient tcpclient.c可以顺利完成 编译 ,并能与下载到目标板 的tcpserver成功通讯;现在把tcpclient.c 的底层通讯部分抽取出来,单独放到一个文件 nettrans.c ,并有netrans.h作为头文件;然后,使用命令 代码如下:gcc -o tcpclient nettrans.c tcpclient.c 编译 ,也总能成功 编译 。 但是,使用Makefile来 编译 ,总是出现如下multiple definition of类的错误: 代码如下:dingq@u1110-120628:~/hwsvn/2s
Eclipse CDT 是一个开发工具包,用于在 Eclipse 进行C/C++ 项目 的开发。它是一个用Java编写的开放源代码 项目 ,可以作为 Eclipse 的插件使用。对于初学者来说,可以将其视为 Eclipse 用于C/C++开发的插件。 虽然很多C/C++开发人员选择使用Visual Studio作为开发平台,但实际上也可以使用 Eclipse 来进行C/C++开发。使用 Eclipse CDT 可以搭建一个标准的C/C++开发环境。 安装 Eclipse CDT 可以通过在 Eclipse 搜索并安装相关插件来实现。在搜索结果 ,可以找到名为“ Eclipse CDT (C/C++ Development Tooling)”的插件,版本为8.2.1(Kepler)。点击“Install”即可自动下载并安装插件。 总结起来, Eclipse CDT 是一个完全用Java实现的开放源代码 项目 ,用于在 Eclipse 开发C/C++ 项目 。它可以作为 Eclipse 的插件使用,并且可以通过搜索和安装相应的插件来搭建C/C++开发环境。