以编程方式在以编程方式创建的 C 项目上禁用 CDT 构建器

Programmatically disabling the CDT builder on a programmatically created C project

我正在使用 CDT 以编程方式创建 C 项目:

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();

    String projectName = projectNames[indices[i]];

    IProject newProjectHandle = root.getProject(projectName.replace("Examples_", ""));

    IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
    IProject project = CCorePlugin.getDefault().createCDTProject(description, newProjectHandle, new NullProgressMonitor());

    ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager();
    ICProjectDescription des = mngr.createProjectDescription(project, false);
    ManagedProject mProj = new ManagedProject(des);


    Configuration cfg = new Configuration(mProj, null, projectName + ".id", projectName);
    cfg.setManagedBuildOn(false);
    IBuilder bld = cfg.getEditableBuilder();

    bld.setManagedBuildOn(false);
    bld.setAutoBuildEnable(false);


    CConfigurationData data = cfg.getConfigurationData();
    des.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data);


    mngr.setProjectDescription(project, des);

这与从 C 向导创建联编文件项目完全一样。

我现在想要的是以编程方式从项目属性中取消勾选 CDT 构建器。

有什么简单的方法可以通过在我的项目创建代码中添加一两行来做到这一点?

好的,成功地更改了代码,以便它在没有构建器的情况下创建 C 项目:

            IWorkspace workspace = ResourcesPlugin.getWorkspace();
            IWorkspaceRoot root = workspace.getRoot();

            String projectName = projectNames[indices[i]];

            IProject newProjectHandle = root.getProject(projectName.replace("Examples_", ""));

            newProjectHandle.create(new NullProgressMonitor());
            IProjectDescription description = workspace
                    .newProjectDescription(newProjectHandle.getName());

            newProjectHandle = CCorePlugin.getDefault().createCProject(description,
                    newProjectHandle, new NullProgressMonitor(),
                    ManagedBuilderCorePlugin.MANAGED_MAKE_PROJECT_ID);
            IndexerPreferences.set(newProjectHandle,
                    IndexerPreferences.KEY_INCLUDE_HEURISTICS, "true");