是否可以从scons运行特定的ant脚本?
例如,从命令行运行此脚本
/usr/local/bin/ant release -f /Users/dev/pic/src/platform/android/java/build.xml
是否可以在scons中成功运行?我试试这个:
env.Command('local.properties', [], "/usr/local/bin/ant release -f /Users/dev/pic/src/platform/android/java/build.xml")
但是失败了,因为它没有输出具有正确SDK位置的local.properties文件
BUILD FAILED
/Users/dev/pic/src/platform/android/java/build.xml:55: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable.
但那些变量是正确的。有没有办法用scons克服这个障碍?
答案 0 :(得分:3)
这取决于你想要执行ant
的方式和时间,但是确实可以。
如果要在每次ant
执行时执行此SCons
脚本,则可以使用SCons Execute()函数,如下所示:
env.Execute("/usr/local/bin/ant release -f /Users/dev/pic/src/platform/android/java/build.xml")
每次都会执行,没有目标/源依赖性检查。
如果您只希望在某个目标过期时执行此ant脚本,请使用SCons Command()函数,如下所示:
env.Command(target='local.properties',
source='/Users/dev/pic/src/platform/android/java/build.xml',
action='/usr/local/bin/ant release -f $SOURCE')
我不确定我的源文件和目标文件是否正确,您可能需要修复它。
请注意,SCons
仅适用于 来源 和 目标 SCons
项目目录层次结构。所述层次结构的根是SConstruct
脚本所在的位置。