1

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)

シェルからこの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)が、Makefileを$PATHXCodeで実行すると、が異なるように見えます。XCodeはから設定を読み取っていないようである~/.profileため、に/opt/local/binありません$PATH

coffeeこれの理由は何ですか?コマンドが見つかるようにこれを修正するにはどうすればよいですか?

4

3 に答える 3

2

さて、DockまたはSpotlightを介して開始されたプログラムは実行されないため.profile$PATH正しく設定されていないようです。

したがって、1つの方法はでを設定すること$PATHです~/.MacOSX/environments.plist。それは明らかに機能しますが、機能する前に再起動する必要があります。

もう1つの方法は、常にコマンドラインから。を使用してXCodeを起動すること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アプリケーションから呼び出して、ドックに置くことができるバンドルを提供します。

do shell script "~/xcode_launcher"

Applescriptからスクリプトを実行してもプロファイルからソースが取得されることはないため、bashスクリプトでプロファイルを取得する必要があります。そのため、デフォルトの環境変数はありません。

于 2013-08-22T06:40:57.197 に答える
0

コマンドと同じものant。Xcodeが実行する必要がある場合ではなく、ターミナルで動作します。それを機能させる唯一の方法:sudo open project.xcodeprojターミナルで。

于 2014-02-10T11:47:42.663 に答える