从XCode调用make时的PATH变量

时间:2012-06-17 14:15:59

标签: xcode makefile environment-variables

对于iPad应用程序,我需要将一些CoffeeScript文件转换为JavaScript文件,然后再将它们与应用程序捆绑在一起。

我尝试使用以下代码将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没有问题。但是,在我在XCode中添加Makefile作为目标之后,我遇到了问题。

Makefile产生以下错误:

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 })。

所以我在Makefile中添加了echo $(PATH),当XCode执行Makefile时,似乎$PATH不同。 XCode似乎无法从~/.profile读取设置,因此/opt/local/bin不在$PATH

这是什么原因以及如何解决这个问题,以便找到coffee命令?

3 个答案:

答案 0 :(得分:2)

好吧,通过Dock或Spotlight启动的程序似乎没有执行.profile,因此$PATH未正确设置。

因此,一种方法是在$PATH中设置~/.MacOSX/environments.plist。那显然是有效的,但你需要重新启动才能运行。

另一种方法是始终使用open projectfile从命令行启动XCode。

答案 1 :(得分: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应用程序中调用它只是为了给它一个我可以放在Dock上的包:

do shell script "~/xcode_launcher"

在bash脚本中需要获取您的配置文件,因为从Applescript运行脚本不会从配置文件中获取,因此您仍然没有默认的环境变量。

答案 2 :(得分:0)

使用ant命令进行SAme。它适用于终端,而不是Xcode必须这样做。只有这样才能让它发挥作用:终端中的sudo open project.xcodeproj