2012-05-04 4 views
2

Javaクラスを実行して生成されたソースコードをビルドしています。生成されたファイルをSconsのJavaクラスに依存させる方法

私の人生では、依存関係をsconsに指示する方法を考えることができませんし、.classファイルをビルドする前にソースコードを構築しようとしています。

o = env.Java(target = 'target_dir'、source = Dir( 'source_dir'))を実行すると、oは空のリストに設定されます。あなたはそのためにによって異なります()関数を使用することができます

+0

はどのようにJavaクラスを実行していますか? Command()関数を使用していますか?もしそうなら、私の答えに追加するもう一つのステップがあります。 – Brady

+0

私は別のステップとしてそれをやっていますし、それをCommand()関数でソースとして使用しています。 –

答えて

2

、このような何か:あなたが依存する(呼び出すときgen'dファイルパスを心配する必要はいけないので、ここで

o = env.Java(target = 'target_dir', source = Dir('source_dir')) 
env.Depends(o, 'the_generated_file_and_path') 

)は(より良いオプションです)、あなたが実行していると仮定するとSConsはコマンド()関数を使用してJavaクラス言った:

# $SOURCE and $TARGET will be filled in by SCons Command, $SOURCE is optional 
cmdLine = 'theCommand $SOURCE $TARGET' 

genTarget = env.Command(target = [list output files here], 
         source = 'java_class_executed', 
         action = cmdLine) 
... 
o = env.Java(...) 
env.Depends(o, genTarget) 

空のリストであることoについては、それは常に空のリストですか?その場合は、ソースをどのように指定するか注意してください。ソースはパッケージのdir構造のルートにする必要があります。次のように、ソースディレクトリを指定する必要があります

. 
|-- SConstruct 
`-- src 
    `-- com 
     `-- tanner 
      `-- application 
       `-- main.java 

:たとえば、あなたのディレクトリツリーはこのようなものであれば'#/src/com'

+0

これは常に「#」を得ています。ありがとう。 また、間違ったやり方に従うための議論ではありませんか? –

+0

ええと、それは私に慣れるにはしばらくかかった:) – Brady

+1

私はargsが正しい順序であると思う、ここでは、医者が言う:env.Depends(ターゲット、依存関係) – Brady

関連する問題