CDT二次开发之编译选项设置

下图我们看到的是一个Eclipse Embedded C/C++项目的build Settings界面。他里面的一些配置项我们二次开发时应该如何自动匹配修改呢?

 1、Eclipse Embedded C项目一般有多个Configuration。如上图的箭头部分,新建项目后默认有两个Configuration。Debug和Relese。当然也可以自定义,增加或者删除Configuration。如何获取所项目中所有的Configuration呢?

IConfiguration[] projectConfigs = ManagedBuildManager.getBuildInfo(curPro).getManagedProject()
                .getConfigurations();

用这句话即可,curPro就是IProject,项目对象。

2、如何获取当前活动的configuration?如何修改当前活动的configuration呢?

IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(curPro);                    
IConfiguration  config = info.getDefaultConfiguration();

设置活动的config:

info.setDefaultConfiguration(config);

3、如何通过Configuration修改里面变量的值呢?

获取值或者修改值,主要是要获取IOption。如下图

红框里面的内容可以通过

IToolChain toolchain = config.getToolChain();
IOption option = toolchain.getOptionBySuperClassId(id);

这种方法来获取,红框之外的可以通过下面的方法来获取:

a: for (ITool t : config.getTools()) {
                for (IOption o : t.getOptions()) {
                    if (o.getId().contains(id)) {
                        option = o;
                        break a;
                    }
                }
            }

这里面的id是什么呢,其实每一个Option都有一个id 。这个id我们如何查找呢,可以到cdt插件里面看源码。可以跟界面对应起来的。

比如我们在源码中看到

org.eclipse.embedcdt.managedbuild.cross.arm.core。这个插件的plugin.xml就描述了页面中大部分的ID。

4、option 取值设置的方法有getValue和setValue。如果我setValue之后,如何保存呢?下面这段代码可以保存我们修改后的值。

ManagedBuildManager.saveBuildInfo(curPro, true);
        IWorkspace workspace = ResourcesPlugin.getWorkspace();
        IWorkspaceDescription workspaceDesc = workspace.getDescription();
        boolean autoBuilding = workspaceDesc.isAutoBuilding();
        workspaceDesc.setAutoBuilding(autoBuilding);
        try {
            workspace.setDescription(workspaceDesc);
        } catch (CoreException e) {
            MessageDialog.openError(viewForm.getShell(), "Error", e.toString());
        }

如果不加这段代码,那么你代码修改的属性值,在eclipse重启后,值又会复原。这几段代码可以把修改后的值保存到项目的.cproject文件中去,就相当于永远保存了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值