从XCode调用make时的PATH变量。

5 浏览
0 Comments

从XCode调用make时的PATH变量。

为了一个iPad应用程序,我需要在将它们与应用程序捆绑之前将一些CoffeeScript文件转换为JavaScript文件。

我尝试将以下代码添加到我的XCode项目的Makefile中:

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中的~/.profile文件中)。

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

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

0
0 Comments

问题出现的原因是在使用XCode调用make命令时,无法正确获取到环境变量(PATH变量)。解决方法是通过在命令行中启动XCode,并在启动脚本中引入.bash_profile文件来获取环境变量。

具体的解决方法如下:

1. 创建一个bash脚本,并将以下内容复制到脚本中:

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

此脚本中的`source ~/.bash_profile`命令用于获取环境变量。

2. 保存脚本,并将其命名为`xcode_launcher`(可以根据个人喜好进行命名)。

3. 创建一个Applescript应用程序,并将以下内容复制到应用程序中:

do shell script "~/xcode_launcher"

此脚本用于调用之前创建的bash脚本。

4. 保存Applescript应用程序,并将其命名为适合放置在Dock上的名称。

这样,通过点击Dock上的Applescript应用程序,就可以启动XCode,并正确获取到环境变量了。

参考链接:

https://stackoverflow.com/a/14285335/751061

0
0 Comments

当从XCode调用make命令时,出现了PATH变量的问题。问题的原因是通过Dock或Spotlight启动的程序没有执行.profile文件,因此$PATH没有正确设置。解决方法有两种。一种是在~/.MacOSX/environments.plist中设置$PATH。但是在生效之前需要重新启动。另一种方法是始终通过命令行启动XCode,使用open projectfile命令。需要注意的是,这里应该是~/.MacOSX/environment.plist而不是environments.plist。是否有一种聪明的方式可以设置将该路径从~/.profile中获取?经过检查,我发现我实际上已经在那个plist文件中有/opt/local/bin路径(OS 10.8;XCode 4.6.3)。但是它似乎仍然无法找到文件。按照OP的建议,在Makefile中实际打印出路径后,我发现这个路径与~/.MacOSX/environment.plist中的路径非常不同,而且它不包括/opt/local/bin。

0
0 Comments

在使用Xcode调用make命令时,出现了(PATH variable when calling make from XCode)这个问题。这个问题的原因是Xcode在调用make命令时,无法正确识别PATH变量,导致make命令无法执行。解决这个问题的方法是在终端中使用sudo open project.xcodeproj命令来打开项目,这样Xcode就可以正确识别和使用PATH变量,使得make命令能够正常执行。

0