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