У меня возникли проблемы с корректным запуском cloc 1.62 из командной строки Windows с использованием qprocess. Вот что у меня есть:проблема с передачей параметров в консольное приложение
QStringList со всеми языками cloc распознает;
QStringList languages;
languages<<"\"ABAP\""<<"\"ActionScript\""<<"\"Ada\""<<"\"ADSO/IDSM\""<<"\"AMPLE\""<<"\"Ant\""<<"\"Apex Trigger\"";
Затем я создать QString, состоящий из всех элементов в списке в разделенных запятой, кроме арматуры для одного, который хранится в переменных языках;
QString langsinuse;
for (int i=0;i<languages.length();i++)
{
if (languages.at(i) != lang)
{
if (langsinuse.isEmpty())
{
langsinuse=langsinuse+languages.at(i);
}
else
{
langsinuse=langsinuse+','+languages.at(i);
}
}
}
тогда я построить аргументы StringList и запустить процесс:
QStringList arguments;
QProcess cloc;
QString params="cloc-1.62.exe --xml --by-file --report-file="+
list1.at(1).trimmed()+'/'+name+'/'+"report.xml"+" --exclude-lang="+langsinuse+" "+distr;
arguments<<"/k"<<params;
cloc.startDetached("cmd.exe",arguments,"cloc/");
Но как-то пробелы в языках имена не считаются прибежит и каждое слово, разделенных пробелом считается другой параметр для Cloc, даже если оба слова заключены в двойные кавычки (например, «Apex Trigger \» »), и часы создают кучу ошибок.
(50 ошибок:
Невозможно прочитать: Trigger», "Arduino
Невозможно прочитать: Эскиз", "ASP", "ASP.Net", "Монтаж", "AutoHotkey", «awk», «Bourne»
Это ошибка, когда вы не указываете имя языка, которое содержит пробелы в двойных кавычках, int --exclude-lang = (например, --exclude-lang = Apex Trigger вызовет ошибку, --exclude-lang = «Apex Trigger» не будет)
Однако, если я просто сохраню цель e, я строю в qt и сохраняю его в каком-то командном файле, который выполняется просто отлично.
Я что-то упустил, избегая двойных кавычек правильно?