想借助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重新指定指定的標准輸出文件中。
需要額外注意的是相關路徑中的\和//表示,以及命令結尾的"\r\n"
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("\r\n");
process.start(program);
process.waitForStarted();
process.waitForFinished();
}
