2016-11-07 48 views
0

我创建一个C项目编程方式使用CDT的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构建器。

enter image description here

有没有简单的方法通过增加一两行到我的项目创建的代码来做到这一点?

+0

望着生成器属性页'org.eclipse.ui.externaltools.internal.ui.BuilderPropertyPage'这是实际上很难做到,因为它涉及到创建禁用的外部工具启动配置。禁用建设者也会导致各种奇怪的行为。 –

+0

从属性页面中删除构建器也适用于我的方式。我不需要CDT生成器,因为我使用了其他导入的CDT生成器。 –

回答

0

好管理,使其创建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");  
相关问题