从命令行使用Eclipse CDT

时间:2011-11-11 11:06:30

标签: c++ command-line refactoring rename eclipse-cdt

我需要将我的一些C ++类,函数和命名空间重命名为构建脚本的一部分,该脚本由我的CI系统运行。

不幸的是,一个简单的sad / awk / gsar / ...技术是不够的,我需要智能的重命名重构,仔细分析我的代码。

实际上我发现,CDT C / C ++重命名重构确实是我需要的。但它是从Eclipse IDE完成的。所以我需要找到一种方法从命令行启动它,并使其成为我的CI构建脚本的一部分。

我知道Eclipse有eclipsec可执行文件,它允许从命令行(see e.g. here)运行一些Eclipse函数。

但我找不到任何合适的功能文档,CDT导出到命令行。我发现唯一的事情是this。但它并没有解决我的问题。

所以,我需要帮助从命令行运行CDT重命名重构(或者像那样)。如果不可能,可能有人会建议另一个工具,可以从命令行重命名C ++的重构?

2 个答案:

答案 0 :(得分:2)

实用主义方法

  

“我需要重命名为构建脚本的一部分”

这听起来有点像设计问题。但是,我记得曾经在AIX / Win32上编写C ++应用程序时犯了同样的错误:最值得注意的是,我希望能够链接共享对象的“冲突”版本。我使用这样一个简单的预处理程序来解决它:

# 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

您可以 have a look at eclim ,它会对您描述的内容做大部分(如果不是全部),但它会针对vim编辑器。

eclim所说的是来自外部程序的完全日食整合(完成,重构,使用搜索等)。我没有完全了解eclim的后端,但我知道它适用于暴露vim插件使用的服务接口的 eclimd服务器进程

我怀疑你应该能够重用eclimd中的代码,如果不是只是为了你的目的使用eclim。

答案 1 :(得分:0)

我们正在为C ++完成一个命令行重命名工具,它使用编译器准确的解析和名称解析,包括处理阴影名称。如需了解更多详情,或者您可能对测试版感兴趣,请与我联系(请参阅bio)。