Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Problems with setting options in a MBSCustomPage

> I have developed a custom page (MBSCustomPage) that gets added to the C  
> Project Wizard. I am collecting some additional information that I am  
> then using to set options in the toolchain (compiler, linker etc). This  
> is done in the CustomPage Runnable that is called. I apply my changes to  
> the toolchain and then call:
>     ManagedBuildManager.saveBuildInfo(project, true);
> to save these options.
>
> When the project is built, I can see my options appear in the command  
> line and the project builds correctly. However, if I close Eclipse and  
> then reopen, my new settings have disappeared. I can confirm this by  
> looking in the .cproject file - my changes are not there.
>
> So, it appears that my options are not being stored in the .cproject  
> file even though they were there in the 'in memory' version.
>
> As an experiment, I added a button to the UI, whose action is to call:
>     ManagedBuildManager.saveBuildInfo(project, true);
> If I press this button after my project has build, I see that sometimes  
> (but not every time), my settings ARE written to the .cproject.
>
> Any clues as to what I might be doing wrong?

We have implemented our own property pages based on the CDT ones, and
setting options through ManagedBuildManager.setOption() seems to work
fine there, so I checked what is different from your approach and
apparantly ManagedBuildManager.saveBuildInfo() is not called, but
instead saving is done through CoreModel.getDefault().setProjectDescription()

Below is an extraction of this approach, perhaps you can give it a try.

  ICProjectDescriptionManager mngr = CoreModel.getDefault().getProjectDescriptionManager();
  ICProjectDescription des = mngr.getProjectDescription(getProject(), true  /*writable description*/);
  ICConfigurationDescription cfg = des.getActiveConfiguration();
  IConfiguration config = ManagedBuildManager.getConfigurationForDescription(cfg);

<your> ManagedBuildManager.SetOption(config,config.GetToolChain()...)
       ...

  CoreModel.getDefault().setProjectDescription(getProject(),des);

Regards,
  Wieant


Back to the top