【问题标题】:How to extend existing cdt builder to make custom builder plugin?如何扩展现有的 cdt builder 以制作自定义构建器插件?
【发布时间】:2018-05-08 02:25:32
【问题描述】:

我正在尝试创建一个自定义 Eclipse 构建器插件来构建我的自定义 C 项目。我想在构建开始之前运行一个 python 脚本列表。我可以使用我的自定义构建器运行我的 python 脚本,但我不知道如何从我的插件中调用现有的构建器(例如 cdt 和 jdt)。即我的构建器必须首先运行 python 脚本,在完成脚本执行后它应该开始常规的 C 构建。我希望这两个应该在单个构建器插件中,而不是两个单独的。

任何帮助将不胜感激。

【问题讨论】:

  • ExternalBuildRunner#invokeBuild 不起作用吗?
  • 哦。这看起来真的很有趣。太感谢了。 'code' new ExternalBuildRunner().invokeBuild(kind, project, configuration, builder, console, markerGenerator, projectBuilder, monitor); '代码'我试过这样。但是“配置、构建器、控制台、markerGenerator、projectBuilder”等参数不可用。你有什么想法吗?

标签: eclipse plugins eclipse-plugin eclipse-rcp eclipse-cdt


【解决方案1】:

您可以使用IProject

public void build(int kind, String builderName, Map<String, String> args, IProgressMonitor monitor)

调用特定构建器的方法。 argsmonitor 可以是 null

kind 是构建类型,类似于 IncrementalProjectBuilder.FULL_BUILD 用于完整构建。

builderName&gt;org.eclipse.core.resources.builders 扩展点中定义的构建器的 ID。

【讨论】:

  • 我不明白!! “org.eclipse.cdt.managedbuilder.core.genmakebuilder”是我需要调用的构建器。如何从我的自定义插件中调用它。你有样品吗?
  • 所以您在此调用中使用"org.eclipse.cdt.managedbuilder.core.genmakebuilder" 作为builderName。不,我没有例子。在答案中添加了更多信息。
  • public class MyBuilder extends IncrementalProjectBuilder { public static final String BUILDER_ID = "com.gs.custombuilder.myBuilder"; @Override protected IProject[] build(final int kind, final Map&lt;String, String&gt; args, final IProgressMonitor monitor) throws CoreException { // get the project to build IProject project = getProject(); applyPythonScript(project.getLocation().toOSString()); project.build(kind, "org.eclipse.cdt.managedbuilder.core.genmakebuilder", args, monitor); System.out.println("Custom builder triggered: "+project.getName());
  • 我已经在上面添加了我的代码。不幸的是,这不起作用。看起来它没有调用该特定行。
【解决方案2】:

如果您愿意,您可以在不编写任何代码的情况下执行此操作。

  1. 打开项目属性。
  2. 选择Builders并按New

  1. 选择程序并按确定

  1. 填写所有内容以启动您的 Python:

  1. 确保“刷新”生成的任何内容:

  1. 按 OK,然后将您的新构建器移到顶部,然后应用并关闭:

  1. 构建您的项目

您可以通过在构建选项中编辑设置来添加一个额外的构建器以在“清理”阶段运行,以进行清理:

在 Builders 列表中,如下所示:

【讨论】:

  • 非常感谢。但是,我的要求不同。我需要一些可以从自定义构建器调用现有构建器的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多