私たちのビルドには、Java クラスを実行して生成されたソース コードがあります。
私は一生、scons に依存関係を指示する方法を見つけることができず、.class ファイルをビルドする前にソース コードをビルドしようとし続けます。
o = env.Java(target = 'target_dir', source = Dir('source_dir')) を実行すると、o が空のリストに設定されます。
私たちのビルドには、Java クラスを実行して生成されたソース コードがあります。
私は一生、scons に依存関係を指示する方法を見つけることができず、.class ファイルをビルドする前にソース コードをビルドしようとし続けます。
o = env.Java(target = 'target_dir', source = Dir('source_dir')) を実行すると、o が空のリストに設定されます。
そのためには、次のような 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'