2010-03-11 110 views
17

如何让Eclipse在一个项目中一次构建多个二进制文件(无需手动编写Makefile)?在一个Eclipse项目中构建多个二进制文件

我有一个CGI项目,导致多个.cgi程序由Web服务器运行,再加上他们使用的几个库。手工制作的Makefile用于慢慢构建它变得无法维护。我们使用Eclipse的“内部构建”来构建所有其他项目,我们也希望在这里使用它,但为了我自己的利益,我无法找到如何让Eclipse以结果形式创建多个小程序,而不是链接所有内容成一个二进制。

+1

你应该考虑问一个单独的问题,关于如何使你的Makefile更易于维护,以防万一这是一个死胡同 – 2010-06-24 05:54:07

+0

我第二个Zac表达的想法。为什么你的Makefile不可维护?许多大型复杂的软件项目在快速变化的代码库上使用makefile非常成功。 – 2010-06-27 23:52:50

回答

21

这里描述的解决方案:http://tinyguides.blogspot.ru/2013/04/multiple-binaries-in-single-eclipse-cdt.html。 有一个摘录:

  1. 创建一个管理项目(文件>新建C++项目>可执行文件)
  2. 添加包含多个主源代码()函数
  3. 转到项目>属性> C/C++常规>路径&符号>管理配置
  4. 为每个可执行文件构建配置并为其命名(您可以克隆现有配置,例如Debug和Release)。
  5. 从项目浏览器中右键单击每个包含main()函数>资源配置>从构建中排除的源文件,并排除除使用此main()函数生成可执行文件的构建配置外的所有构建配置
  6. 全部其他代码默认包含在所有构建配置中。您可能需要根据您的应用程序进行更改。
  7. 您现在可以通过Project>构建配置>设置活动,项目>建设项目
+3

或通过“Project> Build Configurations> Build All”一次性构建它们全部 – 2014-11-09 08:01:46

6

将Eclipse用作生成代码的生成系统通常看起来不太合适。我认为这是一个出色的IDE,并且已经广泛用于Java和C++项目,但是对于构建系统,我坚信Ant,make和其他专用构建工具是可行的。

有几个方面的原因:

  • 专门的编译应用程序提供你正在寻找产生多个可执行目标非常灵活。

  • 蚂蚁和支持大多数可以想象的任意构建过程链(虽然不是全部)。

  • 构建描述文件格式的专用构建实用程序可能比IDE等IDE工具提供更高的稳定性和向后兼容性。另外,我很确定Eclipse的内部构建特性依赖于“.project”文件描述,而后者的格式可能不像Ant或make的构建描述格式那样稳定。

  • 通用,基本构建实用程序通常是命令行为主,这使得它很容易将其与更复杂的集成,更高级别的构建自动化构建管理像脉冲,CruiseControl的,等

  • 公用事业

激发你的问题的需要是告诉你,现在是切换到更好的构建工具的时候了。

2

还有就是用 s到创建一个二进制文件(或共享库的方式构建各主要功能的可执行文件,在我的情况)从每个构建配置。使用上面的答案,这意味着从每个构建配置手动排除除有效的主文件之外的所有文件。

我刚刚使用上述解答来缓解我的项目,该项目通过14个构建配置创建14个共享库。然而,在配置蹦床网上单人“从生成排除”设置是相当繁琐的,所以我切换到使用下面的代码依靠我的完整的主文件:

​​

需要注意的是它并没有别的然后包括另一个。 cpp文件的名称是从推导出的,并且是在编译器选项中设置的符号。该符号是$ {CfgName},并将被eclipse自动替换为当前配置名称。

一个不需要配置,哪个文件包含在哪个编译配置中。只需排除每个构建中的所有$ {CfgName} .cpp文件,并在每个构建中包含main.cpp。 PS:从气垫船的答案给了我一个主要文件,不包含代码的主意。如果其中包含来自不同有效主文件$ {CfgName} .cpp的共享代码,那么对其代码进行处理可能变得不可行,因为main.cpp中的头文件在其中不可见。 我这样做直到昨天,但维护破碎索引等代码是一个很大的痛苦。

PPS:如果只有包含的.cpp文件发生更改,此过程当前为会破坏主文件的自动重建。看来eclipse并不能识别$ {CfgName} .cpp中的变化(这是从构建中排除的)。因此每次更改后都需要手动重建。这是目前正在窃听我;)

相关问题