如何在 gnu arm eclipse 或 cdt 上的项目资源管理器上设置或替换文件?

Posted

技术标签:

【中文标题】如何在 gnu arm eclipse 或 cdt 上的项目资源管理器上设置或替换文件?【英文标题】:how to set or replace a file on project explorer on gnu arm eclipse or cdt? 【发布时间】:2014-06-23 19:29:25 【问题描述】:

我正在研究eclipse cdt插件开发使用gnuarmeclipse。

previous question.

我需要在项目资源管理器中设置或替换文件(例如链接描述文件)。

我知道它改变了项目属性 -> C/C++ Build -> Settings -> Tool Settings -> GCC C Linker -> General -> Script file(-T)。

但我想要,它在项目资源管理器上下文菜单中执行。

见下文。

1) 在 Project Explorer 中选择 LD(仅包含一个链接脚本文件的文件夹)。

2) 右键单击​​并在上下文菜单中选择“设置链接器脚本文件”。

3) 在打开窗口中选择要设置或替换的文件。

这是 setlinkerscript.java

public class setlinkerscript extends AbstractHandler 

public Object execute(ExecutionEvent event) throws ExecutionException 
    // TODO Auto-generated method stub

    IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);

    Shell shell = new Shell();
    FileDialog dialog = new FileDialog(shell, SWT.OPEN);
    dialog.setFilterExtensions(new String[] "*.x");
    String linkerscript = dialog.open();
    System.out.println(linkerscript);

    return null;

我有一个文件位置,但我不知道我在 eclipse 上设置的位置。

有任何 API 或方法吗?或推荐文件。

我不能为图附加 jpg.. 需要更多的声望点。对不起!

提前致谢。

【问题讨论】:

【参考方案1】:

哦,终于,我自己做了。这是我的答案。 感谢 *** 和谷歌。 但是..另一个问题来了...ㅜㅜ

public class setlinkerscript extends AbstractHandler 

    public Object execute(ExecutionEvent event) throws ExecutionException 
        // TODO Auto-generated method stub

        IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);

        Shell shell = new Shell();
        FileDialog dialog = new FileDialog(shell, SWT.OPEN);
        dialog.setFilterExtensions(new String[] "*.x");       
        String linkerscript = dialog.open();    // get new linkerscript with path       

        IEditorPart  editorPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
        String activeProjectName = null;

        if(editorPart  != null)
        
            IFileEditorInput input = (FileEditorInput)editorPart.getEditorInput();
            IFile file = input.getFile();
            IProject activeProject = file.getProject();
            activeProjectName = activeProject.getName();
        

        // ===========================================================================================================
        // CProject

        ICProject cproject = CoreModel.getDefault().getCModel().getCProject(activeProjectName);
        IManagedBuildInfo buildInfo = ManagedBuildManager.getBuildInfo(cproject.getResource());

        // ===========================================================================================================
        // config

        IConfiguration configs[] = buildInfo.getManagedProject().getConfigurations();

        int i;
        for(i=0; i<2; i++)
        
            // configs[0] : Debug
            ITool[] tool = configs[i].getTools();

            // configs[1] : Release

            // ===========================================================================================================
            // tool
            //  GCC Assembler,  GCC C Compiler, GCC C++ Compiler,       GCC C Linker,
            //  GCC C++ Linker, GCC Archiver,   Windows Create Flash Image, Windows Create Listing,
            //  Windows Print Size

            // tool[3] : EISC GCC C Linker
            IOption[] option = tool[3].getOptions();

            // option[0] : linkerscript
            Object value = option[0].getValue();

            try 
                option[0].setValue(linkerscript);
             catch (BuildException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            
        

        // ===========================================================================================================

        return null;
    

【讨论】:

以上是关于如何在 gnu arm eclipse 或 cdt 上的项目资源管理器上设置或替换文件?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse CDT复制所有项目设置

编译时如何更改 makefile 诊断消息 [GNU ARM GCC, Eclipse make.exe]

链接器错误,在 ubuntu 15.04 上使用 OpenCV 和 Eclipse CDT

简单翻译和补充:1. GNU ARM Eclipse

STM32 Eclipse + ARM GNU 工具链错误链接器

用Eclipse和GDB构建ARM交叉编译和在线调试环境