我的构建中有一段源代码,它是通过运行java类生成的。
我不能为我的生活找出如何指导scons的依赖,并且在构建.class文件之前不断尝试构建源代码。
当我执行o = env.Java(target ='target_dir',source = Dir('source_dir'))时,o被设置为空列表。
答案 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'