【问题标题】:Build several CDT C++ projects from commandline从命令行构建多个 CDT C++ 项目
【发布时间】:2010-09-25 13:54:33
【问题描述】:

从命令行构建多个 CDT C++ 项目的最佳解决方案是什么?这些项目有引用,因此不可能只构建单个项目。

【问题讨论】:

  • 你考虑过使用Make吗?
  • Make 使用 CDT 在构建时生成的 .mk 文件。所以不可能从头开始构建项目。
  • 我认为这是 Eclipse 的一大弱点。无头构建不是 Eclipse 世界中的一等公民。

标签: eclipse command-line eclipse-cdt


【解决方案1】:

此功能已添加到 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 及以后的内容。

【讨论】:

  • 此外,您可以指定单个配置:-build {project_name[/config_name] | all} 示例:-build project_name/Release
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这是您问题的答案。你需要“弄乱Makefiles”。 Eclipse 不是构建系统。
    • @Jesse:这只是一半的答案。如果我写的是我们的项目不是 Make 项目,这也不是一个答案。因为改变问题的先决条件并不是问题的答案。
    • @JesseWeigert 评论的新 URL 是:blog.codinghorror.com/the-f5-key-is-not-a-build-process
    【解决方案4】:

    目前不支持使用管理构建器进行无头构建,请参阅bug 186847 - CDT internal builder does not support automated command line builds

    如果您使用非托管(make)构建器,那么您已经拥有可以从命令行使用的 Makefile。

    【讨论】:

    • 这不再是真的。该错误已修复。
    【解决方案5】:

    我们在现有的构建中这样做。

    在所有外部引用和顶层项目中放置一个生成文件。 在您的“全部”规则中,让它运行: 使 -C ./externalref1 使 -C ./externalref2 等等

    我们实际上在一个变量中定义了外部依赖项: EXT_DEP = 外部参考 1 外部参考 2 然后使用 subst(替代)命令使用正确的调用启动所有子制作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 2010-09-27
      • 2010-09-17
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      相关资源
      最近更新 更多