ПРИМЕЧАНИЕ. Это мой первоначальный метод " Практически макрос + Beanshell ", от которого я отказался.Я предпочитаю другую технику, упомянутую в моем втором ответе.
Я также искал способ сделать это для конкретных целей создания.Единственный доступный встроенный ярлык - это «Перестроить последнюю цель», что не так уж и полезно, если вы часто меняете цели.
Хотя у меня пока нет конкретного решения, я 'Я работаю в направлении одного.
Я оцениваю плагин «Практически Макро».Он имеет возможность назначить сочетание клавиш для макроса.У него также есть возможность определять макрос как сценарий beanhell.
Итак, осталось только выяснить, какой тип сценария beanhell сможет выполнить конкретную цель make.
Iя пытался исследовать Eclipse API с помощью инструмента сценариев EASE.
Я поделюсь своими шагами / заметками о том, как я успешно запустил make-target программно (через их интерфейс javascript):
targetmanager = org.eclipse.cdt.make.core.MakeCorePlugin.getDefault().getTargetManager()
projects = targetmanager.getTargetBuilderProjects()
folder = projects[0].getFolder("Path/To/My/Build/Targets/")
// targets = targetmanager.getTargets(folder)
target = targetmanager.findTarget(folder, "MyBuildTargetName")
target.build(new org.eclipse.core.runtime.NullProgressMonitor())
Так что я думаю, что мне осталось (или кому-то еще, что это интересно):
- преобразовать этот скрипт из javascript в beanshell и добавить его в качестве макроса через «Практически Макрос»плагин
- Назначьте ему комбинацию клавиш
... довольно сложный способ сделать это, поэтому, если у кого-то есть более простые альтернативы, я открыт, чтобы выслушать их.
ОБНОВЛЕНИЕ :
FWIW, мне удалось создать скрипт-бин для «Практически Макро» в этой форме:
//Scripts are beanshell format (see http://www.beanshell.org/)
//variable type
//styledText the org.eclipse.swt.custom.StyledText instance for the current editor
//console write output to the macro console via console.write(String), .writeln(String), .write(Exception)
//findTarget the instance of org.eclipse.jface.text.IFindReplaceTarget
import org.eclipse.swt.custom.StyledText;
import org.eclipse.jface.text.IFindReplaceTarget;
c = org.eclipse.core.runtime.Platform.getBundle("org.eclipse.cdt.make.core").loadClass("org.eclipse.cdt.make.core.MakeCorePlugin");
m = c.getMethod("getDefault", null);
dflt = m.invoke(null, null);
targetmanager = dflt.getTargetManager();
projects = targetmanager.getTargetBuilderProjects();
folder = projects[0].getFolder("Path/To/My/Build/Targets/");
target = targetmanager.findTarget(folder, "MyBuildTargetName");
target.build(new org.eclipse.core.runtime.NullProgressMonitor());
И да,это делает вид работы, но единственное, что надо, это то, чтоЗатмение идеал киосков без каких-либо освежающих.Только после того, как сборка завершится, панель консоли будет обновлена с окончательным выводом сборки (одним ударом), и Eclipse снова станет отзывчивым.
Так что это не идеально, но я полагаю, что это постепенный прогресс в направлениипосле ... Что касается того, что вызывает это зависание / остановку во время сборки, я не могу точно сказать, но я подозреваю, что плагин Practically Macro блокирует Eclipse до завершения макроса.
В следующий раз:
Возможно, если бы у меня было еще одно окно времени, чтобы посмотреть на это снова, я бы попытался посмотреть, смогу ли я запустить сценарий EASE-javascript с помощью сочетания клавиш.Эта страница, кажется, намекает, что это возможно:
https://wiki.eclipse.org/EASE/Scripts