Gradle:将本机库与现有外部库链接

时间:2018-01-23 16:14:45

标签: java gradle native

我正在构建一个API来创建C,Puthon和JVM之间的桥梁,使用swig和gradle作为构建系统。问题是如果我想将swig生成的源代码链接到python头,我需要将这些头包含在构建中,我找不到明确的方法。遗憾的是,gradle目前缺少原生版本的文档。

我从不同的来源编写了以下模型定义:

model {
    repositories {
        libs(PrebuiltLibraries) {
            pythonHeaders {
                headers.srcDirs "$pythonPath/include"
            }

            jdkHeaders{...}
        }
    }

    components {
        transport(NativeLibrarySpec) {
            sources {
                lib library: 'pythonHeaders'
                c {
                    source {...}
                    exportedHeaders {...}
                }
            }
        }

    }

    toolChains {...}
}

此定义适用于静态库,但不适用于共享库,因为python36.lib不在链接器路径上。

PreabuiltLibrary接口有一个名为binaries的字段,但我看不到使用DSL添加它的方法。有没有任何标准的方法来修复它或解决方法?

1 个答案:

答案 0 :(得分:0)

Alexander Volanis here提供的答案似乎正在起作用。在Anaconda中,静态库放在libs目录中,而dll-s放在Anaconda根目录中。