Как установить или заменить файл в 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;
}
}