从命令行构建多个CDT C++项目

37

如何在命令行中构建多个CDT C++项目的最佳解决方案?这些项目存在引用关系,因此无法单独构建单个项目。


1
你考虑过使用 Make 吗? - Lawand
1
Make使用CDT生成的.mk文件进行构建。因此,无法从头开始构建项目。 - mmmmmmmm
4
这是 Eclipse 的一个大弱点,我认为。在 Eclipse 的世界中,无头构建不是一等公民。 - JesperE
5个回答

65

此功能在CDT 6中添加(最终构建于2009年6月15日)。您可以从以下页面下载最终版本:download.eclipse.org/tools/cdt/builds/6.0.0/。

使用Eclipse 3.5 + CDT 6发布版,您可以通过命令行向Eclipse发送以下选项来导入、构建和清除构建项目和工作区:

eclipse -nosplash 
        -application org.eclipse.cdt.managedbuilder.core.headlessbuild 
        -import {[uri:/]/path/to/project} 
        -build {project_name | all} 
        -cleanBuild {projec_name | all}
在 Windows 上,使用 eclipsec.exe 替换 eclipse.exe,以便将构建输出写入 stdout/stderr 并且调用在完成之前被阻塞。
'-application' 开关指示 Eclipse 运行 CDT 无界面构建器而非启动工作台。其他开关可以单独或一起使用。这意味着您可以使用自己的 shell 脚本检出项目,将其 '-import' 到工作区,并使用 Managedbuilder 的无界面构建器 '-build' 它。
使用 '-data' 开关来指定要使用的工作区,它可以是一个空的临时目录,请参阅运行时文档以了解平台运行时支持的其他开关: help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html 请参见 bug 186847 comment 24 及其后续内容,以获取有关已提交功能的更多详细信息。

2
此外,您可以使用以下命令指定单个配置:-build {project_name[/config_name] | all} 例如:-build project_name/Release - Alejandro Blasco

1

在 CDT 6 之前,您可以使用 JDT 的 AptBuilder(例如包含在经典 Eclipse 中)。

这使您可以构建已配置的工作区。因此,您可以:检出源代码,配置指向已检出项目的工作区。然后,您的自动化构建脚本可以更新检出并运行 AptBuilder,而无需启动 GUI。


0
如果您在CDT下创建了一个Make项目,您可以使用您喜欢的shell并在所有项目目录中执行make。

这是你问题的答案。你需要“玩弄Makefile”。Eclipse不是一个构建系统。 - Jesse Weigert
3
@Jesse:这只是一个不完整的回答。如果我写道我们的项目不是Make项目,则这不会成为一个答案。因为改变问题的前提条件并不是解决问题的答案。 - mmmmmmmm
3
@JesseWeigert的评论新网址为:http://blog.codinghorror.com/the-f5-key-is-not-a-build-process/。 - Jonah Graham

0

6
这个说法不再正确。那个漏洞已经被修复了。 - Christopher Barber

-1

我们在现有的构建中执行此操作。

在所有外部引用和顶级项目中放置一个 makefile。 在您的“all”规则中,让它运行: make -C ./externalref1 make -C ./externalref2 等等

实际上,我们将外部依赖项定义为变量: EXT_DEP = externalref1 externalref2 然后使用 subst(替换)命令以正确的调用启动所有子 make。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接