在Eclipse CDT中编译含有多个main函数的项目

在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如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#demo multiple target project
#fwoncn
CC := g++
RM := rm-rf
LIBS := -l boost_system -l boost_thread
all : tcp_client tcp_server
clean :
$(RM) tcp_client tcp_server
tcp_client : tcp_client.cpp
$(CC) tcp_client.cpp -o tcp_client $(LIBS)
tcp_server : tcp_server.cpp
$(CC) tcp_server.cpp -o tcp_server $(LIBS)

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

0

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

转载于:https://www.cnblogs.com/zdcaolei/archive/2012/05/03/2480259.html

[转载]在Eclipse CDT中编译含有多个main函数的项目相关推荐

  1. Eclipse CDT中EOF输入的解决方法

    在Xcode中可以用control+D来输入EOF,但是在Eclipse CDT中却老是死机没反应. 解决方法如下: 1.Preference->General->Keys,找到EOF快捷 ...

  2. VS如何在一个项目中添加多个包含main函数的源文件并分别调试运行

    在使用VS编辑器学习C.或者C++的时候,很多人都喜欢在一个项目中写多个小程序来调试运行,因为每次新建一个项目都显得比较繁琐.但一个项目中包含多个main函数,项目是无法运行的. 这里我在一个项目文件 ...

  3. Java中static代码块,main函数,构造函数运行顺序

    1.Java中static代码块,main函数,构造函数运行顺序如下: 答:static代码块是主动执行的,因此static代码块先执行,然后是执行构造函数,最后是Main函数. 如下例子: publ ...

  4. VS2019 C语言,在一个项目中添加多个包含main函数的源文件并分别调试运行

    在使用VS编辑器学习C.或者C++的时候,有时进行一些简单繁多的编程或者测试时需要创建多个项目,而每次新建一个项目都显得比较繁琐,所以我们可以在一个项目中创建多个包来满足需求,但一个项目中包含多个ma ...

  5. 一个Java程序中是否只能有一个main函数

    否 1.一个Java程序中不一定只有一个main函数,但至少有一个main函数因为Java虚拟机运行时,是以main方法为入口进入的 2.main函数是程序的入口,总之一个Java程序执行时只会执行一 ...

  6. 【Java】:类变量、类方法(static在类中的用法)及main函数细节

    前言 经过一个多月的学习,终于进入了学习Java的第二阶段,本篇博客主要介绍Java面向对象高级部分中 类变量.类方法 的使用,以及 main函数语法 剖析,主要设计 static关键字 在类中的使 ...

  7. ☆☆在Eclipse中编译NDK的so文件(普通安卓项目转换为NDK项目的设定)

    1 将Native的编译链接配置加入项目中 2 进行编译 3  项目支持Native后,在首尾分别新增了两个编译过程 转载于:https://www.cnblogs.com/YangBinChina/ ...

  8. Eclipse CDT中出现 Nothing to build for XXX 的问题

    前言:Eclipsecdt针对C/C++程序必须先build再run. 首先,如果工程本身一切正常的话,显示Nothing to build for XXX只是为了说明当前build跟上一次build ...

  9. 【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Java 类中 , 调用 Groovy 脚本 , 出现如下错误 ; java.io.FileNotFoundException: Y:\002_ ...

最新文章

  1. hihoCoder1040 矩形判断
  2. 你一定需要知道的高阶JAVA枚举特性!
  3. python基本符合_python 3-3(2019-11-06 ) Python基础 (三)
  4. 输入长度_CAD怎么测量长度?
  5. 浅谈数据结构之主席树(线段树进阶版)
  6. 在XCode工程中创建bundle文件
  7. Spring Cloud之Swagger集群搭建
  8. 【物联网中间件平台-03】YFIOs安装指南
  9. 编译OpenJDK8:NMAKE : fatal error U1077
  10. 二进制模2除法(CRC循环冗余检验)
  11. 技术评审之技术文档的规范模板
  12. windows下安装kali linux子系统详细教程
  13. iOS开发面试只需知道这些,技术基本通关!(网络篇)
  14. SpringBoot碰到的常见问题
  15. 解决苹果电脑(Mac)无法写入移动硬盘的方法
  16. Python取多维数组第n维的前几位
  17. chrome 谷歌浏览器模拟各种手机设置userAgent
  18. 定时器中断实验和PWM输出实验(寄存器)
  19. github项目管理和贡献代码
  20. 函数中的形式参数和实际参数

热门文章

  1. cisco设备运维常用命令 总结-1
  2. 关于ping telnet
  3. [NHibernate] Guid 作主键速度超慢的背后
  4. liferay中使用自己的数据库
  5. IE相关的一些BUG汇总
  6. php 面向对象学习
  7. centos及ubuntu安装 Puppeteer/rendertron所需的依赖包
  8. 六周第四次课(5月2日)
  9. javascript高级程序设计(第3版)之《script元素》
  10. 【原】移动端界面的适配