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

假设你有一个拥有大量文件的C项目,并且通过在GCC中使用-D选项来pipe理大量的configuration来定义一些标志。

在我的情况下,我有大量的文件与这种东西:

 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 } 

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

Windows下使用Eclipse可以这样做吗? 也许是一个Eclipse插件,或其他。

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

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

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

你实际上可以添加一些其他的过滤器来find更好地调整你的文件。

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

如果你已经用grep为Unix制作了一个解决方案,那么你为什么不在Windows上做同样的事情呢? 你可以使用msys和它附带的unix工具。

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

为什么你不能在Windows上同时使用grep,find和touch?

http://unxutils.sourceforge.net/