2013-02-16 72 views
2

今晚我們有一個惱人的問題,只是出現在Xcode的命令行版本中,而不是來自Xcode的GUI。雙引號代表Xcode的搜索路徑是什麼?

從具有Xcode GUI的機器構建遞歸用戶頭搜索路徑$ PROJROOT,沒有雙引號時,我們沒有遇到任何問題。但是,當使用Xcode的命令行編譯功能構建Jenkins時,會出現Headers不可察覺的錯誤。

經過一小時左右,有人決定嘗試使用雙引號(「$ PROJROOT」)來包裝複述的$ PROJROOT。一旦發生這種情況,Jenkins的命令行構建項目終於成功了。

所以我們並不完全理解將我們的搜索路徑封裝在引號中,或省略引號的影響。

任何人都可以闡明究竟是什麼導致了這個問題?從命令行到GUI,雙引號對編譯器意味着什麼?

+1

這與bf編程語言有什麼關係?或者,你是否正在爲自己的標籤帶來一些創意自由? – Rob 2013-02-16 03:58:27

回答

9

構建機器上的路徑很可能在其內部有空間(例如「Macintosh HD/My Project/」)。當從命令行調用工具時,這往往會造成混淆,因爲命令行解析器不知道空格字符是路徑的一部分,或者它是從另一個命令行參數開始的,所以這就是爲什麼總是很好地包裝雙引號內的路徑。

另一種選擇是使用帶空格的反斜槓(例如Macintosh\ HD/My\ Project/),但是在眼睛上跟蹤並且難一點。

+0

這確實是問題所在,我在昨晚的文件中發現了一條暗示,但並不確定是這種情況。然而,你是第二個說這是事實的人,所以我必須接受這個答案。 – 2013-02-16 17:25:00

1

當某些工具通過shell執行另一個二進制文件時,可能會出現Bash分詞。

勉強有用的人頁文檔:
http://www.gnu.org/software/bash/manual/html_node/Word-Splitting.html#Word-Splitting

分詞的詳細描述:
http://mywiki.wooledge.org/WordSplitting

我沒有足夠的聲譽後最後3爲鏈接。與文件名(#1這個名單上)打交道時

常見的陷阱:
mywiki.wooledge.org/BashPitfalls

比較的Posix系統()...
stackoverflow.com/questions/5666962/will -posix-system3 -call-to-an-asynchronous-shell-command-return-immediately

到NSTask(它構建了一個參數數組,因此沒有分詞)...
stackoverflow.com/questions/412562/execute-a-terminal-command-from-a-cocoa-app