2010-11-25 15 views
2

EclipseプロジェクトでAntビルドファイルと関連するAntビルダーを作成しました。ビルダーは正しく実行されていますが、正しい情報をbashに渡すことができません。私はXP Professional SP3マシンでcygwinを実行しています。私はコマンドが動作していることを知り、cygwinターミナルからそれを確認しました。私はカスタムビルダーをこのコマンドで先に作成したので、Eclipseから動作することも知っています。ここでEclipseのAntビルドファイルからBash.exeを実行する際のトラブル

は私のビルドxmlです:

<?xml version="1.0" encoding="UTF-8"?> 
    <project name="BlazeLibrary.makejar" default="makejar" basedir="."> 
    <property name="bash" location="e:\cygwin\bin\bash.exe" /> 
    <property name="workingdir" location="e:\cygwin\bin" /> 
    <property name="cmdline" value="--login -c \&quot;cd /cygdrive/c/dev/projects/droid/NDKTestApp &amp;&amp; /cygdrive/c/dev/tools/droid/android-ndk-r4b/ndk-build&quot;" /> 
    <target name="nativeBuild" description="Build the native binaries using the Android NDK"> 
     <exec dir="${workingdir}" executable="${bash}"> 
      <arg value="${cmdline}" /> 
     </exec> 
    </target> 
    </project> 

タスクが細かい実行されますが、出力は、私は、コマンドラインパラメータが正しくないことを示しています。それらは、正確に記載されている(そして、前述のカスタムビルダーと同様に、cmdプロンプトから実行することによって検証されますが)。ここで

はエラーメッセージ(残りはちょうど助けを吐くと、この質問のための無関連性のある)の関連する部分である:

nativeBuild: 
[exec] /usr/bin/bash: --login -c "cd /cygdrive/c/dev/projects/droid/NDKTestApp && /cygdrive/c/dev/tools/droid/android-ndk-r4b/ndk-build": invalid option 
[exec] Usage: /usr/bin/bash [GNU long option] [option] ... blah blah blah 

私はアリだということを認めざるを最初になりますnoobので、私はおそらく非常に明白な何かが不足しています。私は検索しましたが、実際に私に飛びつくものは何もなく、タスクは正しく実行されているように見えます。事前に助けてくれてありがとう。

答えて

2

直ちに問題が発生するのは、${cmdline}プロパティが単一の引数としてbashに渡されていることです。したがって、非常に長い「無効なオプション」です。

代わりarg lineのようにコマンドを渡すことができます。

<exec dir="${workingdir}" executable="${bash}"> 
    <arg line="${cmdline}" /> 
</exec> 

それとも別のvalue秒にそれを破ります。

<property name="cmdline" value="cd /cygdrive/ ..etc.. ndk-build" /> 

<exec dir="${workingdir}" executable="${bash}"> 
    <arg value="--login" /> 
    <arg value="-c" /> 
    <arg value="${cmdline}" /> 
</exec> 

hereの詳細:あなたが、その場合の-c引数の周りquotsを必要としないことに注意してください。

<!-- These properties hold the location of the android-ndk, for us to build our antive libs --> 
<property name="bash" location="c:\cygwin\bin\bash.exe" /> 
<property name="workingdir" location="c:\cygwin\bin" /> 
<property name="cmdline" value="--login -c 'cd /path/to/project/files;/path/to/ndk_build/ndk-build;exit'" /> 
<target name="NDKBUILD" description="Build the native binaries using the Android NDK"> 
    <exec dir="${workingdir}" executable="${bash}"> 
     <arg line="${cmdline}" /> 
    </exec> 
</target> 

注示すために「」XML文字列を表し、これに「」の使用:

+0

それでした!どうもありがとうございます。私は答えとしてマーキングしています。 – Soshimo

1

あなたはまだちょうどこのように、ビットの周りにあなたの引用符を変更する、あなたの最初の記事でフォーマットを使用することができますcygwin/bashに渡されたコマンドライン。

また、私のアンドロイドビルダー(大規模なソースの前処理を伴う大きくカスタマイズされたantスクリプト)でこのスクリプトを使用すると、Antビルドが「既に進行中です」という問題が発生しました。

この目的のために、私はbashスクリプトの最後にexitコマンドを追加したので、cygin bashプロセスは呼び出された後も常に閉じられます。

関連する問題