2012-06-17 19 views
1

對於iPad應用程序,我需要在將某些CoffeeScript文件與應用程序捆綁在一起之前轉換爲JavaScript文件。從XCode調用make時PATH變量

我想一個Makefile文件添加到我的XCode項目,下面的代碼:

MANUAL_ROOT=IOS12BSH/manual 
SCRIPTS_ROOT=$(MANUAL_ROOT)/scripts 

COFFEE_SOURCES=$(SCRIPTS_ROOT)/*.coffee $(SCRIPTS_ROOT)/guides/*.coffee 
JAVASCRIPT_TARGETS=$(COFFEE_SOURCES:.coffee=.js) 

all: build 

build: coffeescript 

clean: clean_coffeescript 

coffeescript: $(JAVASCRIPT_TARGETS) 

clean_coffeescript: 
    rm -f $(JAVASCRIPT_TARGETS) 

$(JAVASCRIPT_TARGETS): $(COFFEE_SOURCES) 
    coffee -c $(COFFEE_SOURCES) 

從運行shell工作這個Makefile沒有問題。但是,在將Makefile添加爲XCode中的目標後,我遇到了問題。製作由生成文件

以下錯誤:

coffee -c IOS12BSH/manual/scripts/*.coffee IOS12BSH/manual/scripts/guides/*.coffee 
/bin/sh: coffee: command not found 
make: *** [IOS12BSH/manual/scripts/*.js] Error 127 
Command /Applications/Xcode.app/Contents/Developer/usr/bin/make failed with exit code 2 

即奇怪,因爲被安裝在我的機器的coffee命令(它/opt/local/bin/coffee下安裝和/opt/local/bin被添加到我的$PATH~/.profile)。

所以我加了一個echo $(PATH)到我的Makefile,看起來$PATH是不同的,當Makefile被XCode執行時。 XCode似乎沒有讀取~/.profile的設置,因此/opt/local/bin不在$PATH中。

這是什麼原因以及如何解決這個問題,以便找到coffee命令?

+0

爲什麼不在你的makefile中修改你的「'$ PATH'」來添加「'/ opt/local/bin'」?你如何在Xcode中運行makefile?它是否處於「運行腳本」構建階段? –

+0

我無法在Makefile中更改它,因爲Makefile位於共享存儲庫中。其他開發者可能已經在其他地方安裝了他們的'咖啡'命令。 – Simon

+0

我沒有'Makefile'的經驗,但你不能'源〜/ .profile'? –

回答

2

好吧,看起來通過Dock或Spotlight啓動的程序不會執行.profile,因此$PATH設置不正確。

所以一種方法是將$PATH設置爲~/.MacOSX/environments.plist。那很明顯,但你需要重新啓動才能工作。

另一種方法是始終從命令行啓動XCode,並使用open projectfile

+0

應該是'〜/ .MacOSX/environment.plist'不是複數'environments.plist'。 :) – NHDaly

+0

有沒有什麼聰明的方法來設置此路徑來源於〜/ .profile? – NHDaly

+0

嗯,我剛剛檢查過,我實際上已經在該plist文件中有'/ opt/local/bin' ..(OS 10.8; XCode 4.6.3)。但它似乎仍然無法找到該文件。在像OP建議的那樣在Makefile中實際打印出路徑後,我發現這個路徑實際上與'〜/ .MacOSX/environment.plist'中的路徑非常不同,並且不包含'/ opt/local/bin '。 – NHDaly

0

這個答案詳細解釋了這個問題: https://stackoverflow.com/a/14285335/751061

什麼結束了工作最適合我只是從從命令行啓動的Xcode。 我寫了一個簡單的bash腳本,它看起來像:

source ~/.bash_profile # This is the trick that gets us our environment variables. 
open -a "Xcode" 

然後我把它從一個AppleScript應用程序只是爲了給它一個包,我可以把被告席上:

do shell script "~/xcode_launcher" 

採購您的個人資料在bash腳本中是必需的,因爲從Applescript運行腳本不會從配置文件獲取,因此您仍然不會擁有默認的環境變量。

0

ant命令SAME東西。它在終端上工作,而不是如果Xcode必須這樣做。只有這樣才能在終端上運行:sudo open project.xcodeproj