gpt4 book ai didi

c++ - QProcess with non-wrapped pipe symbol |在参数列表中

转载 作者:可可西里 更新时间:2023-11-01 10:36:39 25 4
gpt4 key购买 nike

你好,亲爱的 stackoverflow 用户,

尝试在 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 );

问题是,像“Debug|Win32”这样的名称是许多解决方案的常见配置名称,我想以编程方式构建它,调用我使用 QProcess 的程序 - 但符号“|”被视为管道符号,windows 说:“命令 Win32 错误或找不到。”(orig. "Der Befehl "Win32"ist entweder falsch geschrieben oder konnte nicht gefunden werden.")

如果我尝试使用引号:

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

错误是:“vcbuild.exe:错误 VCBLD0006:无效的配置名称:“Debug|WIN32”。”(orig. "vcbuild.exe: Fehler VCBLD0006: Ungültiger Konfigurationsname: "DEBUG|WIN32".")显然,引号现在是名称的一部分,因此管道符号不再被视为管道符号,但现在配置名称是错误的。通过尝试和错误,我发现 Qt 用三个引号将它括起来。就好像我会写:

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

解决方法是将所有内容放入一个大字符串中,但那将是我最后一个不想要的选择,因为那样我将不得不根据引号或空格自行完成所有引用工作。

有人知道如何解决我的问题吗?提前致谢!

最佳答案

尝试使用^作为转义字符,即"Debug^|Win32"。参见 cmd Escape Character了解详情。

关于c++ - QProcess with non-wrapped pipe symbol |在参数列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22668149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com