2016-11-07 1 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 빌더는 필자가 가져온 다른 것들을 사용하기 때문에 필요하지 않습니다. –

답변

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");  
관련 문제