2016-11-07 3 views
0

я создаю проект C программно с использованием CDT:Programatically отключив строитель 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); 

Это работает точно так же, как и создание Makefile проекта от мастера C.

Теперь я хочу программно отключить конструктор CDT от свойств проекта.

enter image description here

Есть ли простой способ сделать это, добавив одну или две строки в моем коде создания проекта?

+0

Глядя на странице Builder недвижимости 'org.eclipse.ui.externaltools.internal.ui.BuilderPropertyPage' это на самом деле довольно сложно сделать, поскольку это связано с созданием отключенной конфигурации запуска внешних инструментов. Также отключение строителей может привести к различным видам странного поведения. –

+0

Удаление строителя со страницы свойств также работает по-моему. Мне не нужен создатель CDT, поскольку я использую другие, которые я импортирую. –

ответ

0

Ok удалось изменить код таким образом, что он создает проекты 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");  

 Смежные вопросы

  • Нет связанных вопросов^_^