Как установить или заменить файл в Project Explorer на GNU Arm Eclipse или CDT?

Я изучаю разработку плагинов cdt eclipse, использую gnuarmeclipse.

предыдущий вопрос

Мне нужно установить или заменить файл (такой как linkerscript) в проводнике проекта.

Я знаю, что это изменить свойства проекта -> C/C++ Build -> Настройки -> Настройки инструмента -> GCC C Linker -> Общие -> Файл сценария (-T).

Но я хочу, чтобы он выполнялся в контекстном меню проводника проекта.

Увидеть ниже.

1) Выберите LD(папка только для одного файла линкерскрипта) в Project Explorer.

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;
}}

У меня есть местоположение файла, но я не знаю, где установить затмение.

Любой API или метод есть? или рекомендовать документы.

Я не могу прикрепить JPG для фигуры.. нужно больше очков репутации. Сожалею!

Заранее спасибо.

1 ответ

Решение

О, наконец, я сделал это сам. Это мой ответ.

Спасибо stackru и Google.

Но... другие проблемы... ㅜㅜ

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;
    }
}
Другие вопросы по тегам