2014-03-26 32 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""" 

的解決辦法是把一切都變成一個大的字符串,但是這將是我最後一次不需要選擇,因爲這樣我會根據所有引用的東西做引用或空間在我自己的。

有人知道答案如何解決我的問題?先謝謝你!

回答