2

私たちのビルドには、Java クラスを実行して生成されたソース コードがあります。

私は一生、scons に依存関係を指示する方法を見つけることができず、.class ファイルをビルドする前にソース コードをビルドしようとし続けます。

o = env.Java(target = 'target_dir', source = Dir('source_dir')) を実行すると、o が空のリストに設定されます。

4

1 に答える 1

2

そのためには、次のような Depends() 関数を使用できます。

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

SCons Command() 関数を使用して前述の Java クラスを実行していると仮定すると、より良いオプションがあります (Depends() を呼び出すときに生成されたファイル パスを気にする必要がないため)。

# $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'

于 2012-05-04T12:22:58.407 に答える