| [cdt-dev] Problems with programmatically setting the compiler and linker options |
|
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 |