从Scons下的Swig接口(.i)生成Java类

时间:2015-10-01 18:07:11

标签: java swig scons

当我尝试运行scons(2.3.0)从SWIG接口文件构建类时,scons无法获取所有生成的文件,无论是在源路径中还是包含在构建中(甚至使用classpath设置)。相反,只尝试编译两个java文件,这两个文件都失败了,因为它们是从其他类派生的。

loc_env = env.Clone()
loc_env['JAVACLASSPATH']= ['build/$TARGET_ARCH/$TARGET_OS/.../java']
swig_j = loc_env.Java(target='.', source=['source_java.i']) #1
#swig_j = loc_env.Jar(target='.', source=['source_java.i']) #2

#1和#2都无法产生结果。 #2显示一条错误消息,表明该来源尚未被接受,并且是一个空字符串,我可以接受,即使示例代码表明它应该可以正常工作。

对于#1根本原因似乎是在Scons / Tool / swig.py def _find_modules(src):中,它具有匹配生成的所有模块的正则表达式,但无法解释任何原始枚举或其他文件的包装C代码。当我有一个手动的makefile类路径

作为参考,#1的javac构建指令是:

javac -classpath build/x86_64/linux/.../java -d build/x86_64/linux/.../java/ -sourcepath build/x86_64/linux/.../java build/x86_64/linux/release/.../source.java build/x86_64/linux/release/.../sourceJNI.java

这是一个已知的错误(作为SCONS处理1> N映射的一部分)?这是.s文件的Scons解析中的一个缺陷吗?或者这是一个更基本的问题?

1 个答案:

答案 0 :(得分:0)

这是SCons中的一个错误。 2.5.0的更改通过改进跨语言扫描来解决问题。我希望明年某个时候能够撕掉我的黑客!