对于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
命令?
答案 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
。