Прагматический подход
«Мне нужно переименовать как часть моего сценария сборки»
Это немного похоже на проблему дизайна. Однако я помню, что был виновен в том же грехе, когда писал приложение на C ++ для AIX / Win32: прежде всего я хотел иметь возможность связывать «конфликтующие» версии общих объектов. Я решил это, используя простой взлом препроцессора, такой как:
# makefile
#if($(ALTERNATIVE))
CPPFLAGS+=-DLIBNAMESPACE=MYLIB_ALTERNATIVE
#else
CPPFLAGS+=-DLIBNAMESPACE=MYLIB
#endif
./obj64/%.o: %cpp
xlC++ $(CPPFLAGS) $^ -o %@
Пример исходного / заголовочного файла:
namespace MYLIB
{
class LibService :
{
};
}
Как видите, для этого требуется всего один
find -iname '*.[hc]pp' -o -iname '*.[hc]' -print0 |
xargs -0 sed -i 's/OldNamespace/MYLIB/g'
Eclipse Automation
Вы могли бы взглянуть на eclim , который выполняет большинство, если не все, того, что вы описываете, однако он нацелен на редактор vim.
Что может похвастаться eclim - это полная интеграция затмений (завершение, рефакторинг, поиск использования и т. Д.) Из внешней программы. Я не совсем в курсе бэкэнда eclim, но я знаю, что он работает с серверным процессом eclimd , который предоставляет сервисный интерфейс, используемый плагином vim.
Я подозреваю, что вы сможете повторно использовать код из eclimd, если не просто использовать eclim для своих целей.