1

对于 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 没有问题。但是,在我将 Makefile 添加为 XCode 中的目标后,我遇到了问题。

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的 in下~/.profile)。

所以我在我的 Makefile 中添加了一个,当 Makefile 由 XCode 执行时echo $(PATH),它似乎有所不同。$PATHXCode 似乎没有从中读取设置~/.profile,因此/opt/local/bin不在$PATH.

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

4

3 回答 3

2

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

所以一种方法是设置$PATHin ~/.MacOSX/environments.plist。那显然可以工作,但是您需要重新启动才能工作。

另一种方法是始终从命令行使用open projectfile.

于 2012-06-24T08:41:41.950 回答
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 运行脚本永远不会从配置文件中获取,因此您仍然没有默认环境变量。

于 2013-08-22T06:40:57.197 回答
0

ant命令相同。它适用于终端,而不是 Xcode 必须这样做。让它工作的唯一方法:sudo open project.xcodeproj在终端。

于 2014-02-10T11:47:42.663 回答