2012-08-12 86 views
1

我一直在想如何將工作目錄設置爲與我的程序相同的目錄。由於我對Objective-C和Cocoa不熟悉,因此我將其作爲基本的命令行應用程序編寫,這意味着標準輸入/輸出。出於某種原因,工作目錄設置爲$ HOME目錄,而不是與文件本身相同的目錄。我知道使用帶命令行應用程序的MacOSX C++工作目錄

system("PWD"); 

會回聲的路徑,但在一個不可用(至少我)的格式。

編輯:只是爲了澄清一點,我需要能夠在不僅僅是我的機器/用戶上使用文件流的相對文件路徑。

+1

沒有像「C++工作目錄」這樣的事情。請說明你的意思。是XCode的ist工作目錄? – klm123 2012-08-12 23:44:19

+0

C++確實使用相對文件路徑的工作目錄。在一臺Windows機器上,工作目錄是程序所在的目錄。對於OSX顯然,它是不同的。它使用我的$ HOME目錄作爲目錄。 – 2012-08-12 23:57:53

回答

2

您可以在方案編輯器中從Xcode運行時設置工具在其中啓動的目錄。在工具欄中,點擊項目名稱(在>左側),然後點擊「編輯方案...」,點擊左側列表中的「運行」,然後點擊右側的「選項」標籤,你會看到一個使用自定義工作目錄的選項。

請注意,您不能保證不區分大小寫的文件系統,因此您應該使用小寫字母pwd或您的system(3)調用將失敗。 iOS從不使用不區分大小寫的文件系統,並且OS X可以安裝在不區分大小寫或區分大小寫的文件系統上。無論如何,getcwd(3)更有效率/合適。

另外,如果可以的話,你應該升級到最新版本的Xcode。早期的4.x版本在邊緣很粗糙(有人會說4.4/4.5仍然是,但它們至少更穩定)。

+0

從Xcode設置工作目錄的問題是我只能在我的用戶的計算機上使用該程序。如果我要使用不同的計算機或不同的用戶(這是我的意圖),它會並且確實會失敗。 至於系統(「pwd」),我通常爲系統調用輸入大寫字母,因爲當我爲教師提交程序時,他們需要windows機器的大寫系統調用。所以這主要是大寫呼叫的習慣。這個應用程序雖然不是一項任務。 至於升級Xcode,我打算說,當我回到大學,因爲我的家在互聯網上是絕對可怕的。 – 2012-08-12 23:53:13

+0

@Morph:工作目錄是啓動應用程序的目錄。這不是二元的一部分,而是環境。如果您打開終端,請將目錄更改爲二進制文件所在的位置,然後從此處啓動應用程序,這將是您的目錄。一般來說,儘管在unix系統中應用程序將從用戶主目錄啓動(如果從圖形環境啓動)。如果你需要,你可以找到可執行文件目錄:[http://stackoverflow.com/questions/4087328/how-to-find-the-residing-directory-of-a-os-x-application-package-programmatica] – 2012-08-13 01:42:32