自动触摸使用某个#define的所有文件(#ifdef foo / #endif)

时间:2010-08-02 12:29:22

标签: c eclipse windows scripting c-preprocessor

假设您有一个包含大量文件的C项目,并使用GCC中的-D选项管理大量配置来定义一些标记。

在我的特定情况下,我有大量文件包含这种东西:

void foo( sometype *x)
{
   do_stuff_with_x(x);

#ifdef MY_FLAG
   do_additional_stuff(x);
#endif

#ifdef OTHER_FLAG
   do_some_other_stuff(x);
#endif

}

现在,每当我更改其中一个标志时,我需要清除项目并重新编译所有源代码,因为我无法有选择地触摸使用此标志的文件。

是否可以使用 Windows 下的 Eclipse 来实现这一目标? 也许是一个Eclipse插件,或者其他什么。

对于linux,我可能会混合使用grepfindtouch,但在Windows上我不知道。

3 个答案:

答案 0 :(得分:1)

好的,在人的压力下,我安装了MSYS并使用了这样一个命令:

$ find . -name "*.c" -or -name "*.h" | xargs grep "MYFLAG" -q -l | xargs touch

您实际上可以向find添加一些其他过滤器,以更精细地调整您触摸的文件。

我不知道xargs,在我的命令行上有任何想法吗?

答案 1 :(得分:0)

如果您已经使用grep,查找和触摸为Unix编写了解决方案,为什么不在Windows上执行相同操作?您可以使用msys及其附带的unix工具。

我目前在机器上没有Eclipse安装,但我确信你可以从Eclipse启动批处理

答案 2 :(得分:0)

为什么不在Windows上使用grep,find和touch的混合?

http://unxutils.sourceforge.net/