想借助git-bash在windows上使用Linux下的find,grep等命令查找文件中的宏定义。
但在实际操作过程中发现通过QProcess调用git-bash启动git-bash时默认带了参数--login -i,导致执行命令时grep好像将grep命令附加到了--login -i后面报了grep无权限的问题。
后续直接找到了grep for windows,GNU下的grep命令的windows版本执行文件,并找到其执行依赖的dll库,放在执行文件目录下,实现了QProcess通过grep.exe进行字符串匹配后输出匹配内容到 预先通过setStandardOutputFile重新指定指定的标准输出文件中。
需要额外注意的是相关路径中的和//表示,以及命令结尾的" "
QProcess process(0);
process.setStandardOutputFile(QString("E:\x.txt"), QIODevice::Append);
QStringList result;
for (int k = 0; k < files.size(); k++)
{
QString program = "grep.exe -E ";
program.append(""^\s*#if|^\s*#ifdef|^\s*#ifndef|^\s*#elif"");
program.append(" ");
QString str = files.at(k);
str.replace(QString("/"), QString("//"));
program.append(str);
program.append("
");
process.start(program);
process.waitForStarted();
process.waitForFinished();
}