如何使生成的文件依赖于Scons中的java类

时间:2012-05-04 11:36:05

标签: scons

我的构建中有一段源代码,它是通过运行java类生成的。

我不能为我的生活找出如何指导scons的依赖,并且在构建.class文件之前不断尝试构建源代码。

当我执行o = env.Java(target ='target_dir',source = Dir('source_dir'))时,o被设置为空列表。

1 个答案:

答案 0 :(得分:2)

您可以使用Depends()函数,如下所示:

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

这是一个更好的选择(因为你在调用Depends()时不必担心gen'd文件路径),假设你正在使用SCons Command()函数执行所述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'