Hi,
I want to programmatically set the compiler and linker options
for a specific project. Below is the code I am using:
// Compiler option to set: e.g. symbols
String[] symbolList = getSymbolsToDefine();
IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(proj);
IConfiguration defaultConfiguration = buildInfo.getDefaultConfiguration();
IToolChain toolChain = defaultConfiguration.getToolChain();
ITool[]
cCompilers = toolChain.getToolsBySuperClassId("cdt.managedbuild.tool.gnu.c.compiler.mingw.base");
ITool cCompiler =
… // obtain from cCompilers
cCompilerSymbolDefOption = cCompiler.getOptionBySuperClassId();
cCompilerSymbolDefOptionHolder = cCompilerSymbolDefOption.getOptionHolder("gnu.c.compiler.option.preprocessor.def.symbols");
ManagedBuildManager.setOption(defaultConfiguration,
cToolListOptionHolder, cToolListOption, symbolList);
ManagedBuildManager.setDefaultConfiguration(proj, defaultConfiguration);
ManagedBuildManager.saveBuildInfo(proj, true);
I do the same thing, i.e. use setOption(), for setting
optimization level, debugging level, libraries, … (all compiler &
linker options).
Problems I see:
1.
The options I set are inherited by all open projects,
instead of just being applied to the specific project. Worst, new projects I
create from then on inherits these options by default.
2.
At the properties GUI, I see the options I have set
under “All options”. However, I do not see the values reflected on
the individual widgets (e.g. nothing in the Symbols window).
Can someone help me with these 2 issues? Is there a
different way of doing this?
Thanks a lot,
Mary Ann