2014-03-26 34 views
2

你好亲爱的计算器用户,带有非包装管道符号的QProcess |在参数列表

我有一个问题,试图在Windows上使用QProcess运行命令。除了解释一个参数以外,一切正常。

我打电话给vcbuild.exe来构建一个visual studio 2008解决方案。调用看起来是这样的:

QString program = "cmd.exe"; 
    QStringList arguments; 
    arguments << getenv(VS90COMNTOOLS) + "\\vsvars32.bat" 
     << "&" << "vcbuild.exe" << pathToSolution << "Debug|Win32"; 
    QProcess::execute(program, arguments); 

的问题是,例如,一个名称“调试|的Win32”是许多解决方案,我想以编程方式建立呼叫我的程序,其采用QProcess中常见的配置名称 - 但符号“ |”被视为管道符号并且窗口显示为: “命令Win32错误或无法找到。” (原稿 “明镜Befehl ”Win32的“ IST entweder falsch geschrieben奥德konnte nicht gefunden werden。”)

如果我尝试使用引号:

arguments << [...] << "\"Debug|Win32\"" 

的错误是: “vcbuild.exe:错误VCBLD0006:配置名称无效:“Debug | WIN32”。“ (orig。“vcbuild.exe:Fehler VCBLD0006:UngültigerKonfigurationsname:”DEBUG | WIN32“。”) 显然,引号现在是名称的一部分,因此管道符号不再被视为管道符号,而是现在的配置名称是错的。通过尝试和错误,我发现Qt用三个引号包装它。这是因为如果我这样写:

vcbuild.exe [...] """Debug|Win32""" 

的解决办法是把一切都变成一个大的字符串,但是这将是我最后一次不需要选择,因为这样我会根据所有引用的东西做引用或空间在我自己的。

有人知道答案如何解决我的问题?先谢谢你!

回答