javacpp gradle集成

buid.gradle

plugins {
    id 'java'
    id 'war'
    id 'maven-publish'
    id 'org.bytedeco.gradle-javacpp-build' version '1.5.9'
}

sourceCompatibility = 1.8
compileJava.options.encoding = 'UTF-8'

group = 'kl.kcs'
//version = '1.0.0'

repositories {
    gradlePluginPortal()
    google()
    mavenCentral()
}

dependencies {
    implementation fileTree(dir: 'src/libs', includes: ['*.jar'])

    implementation 'org.bytedeco:javacpp:1.5.9'
}

sourceSets {
    main {
        resources {
            srcDir 'src/main/resources'
            srcDir 'src/main/java'
        }
    }
}

tasks.withType(JavaCompile).configureEach {
    options.encoding = "UTF-8"
}

//  build -PjavacppPlatform=android-arm  生成 arm-v7 so
//  build -PjavacppPlatform=android-arm64  生成 arm-v8a so
//  build -PjavacppPlatform=windows-x86_64  生成 win64 so
//  Edit Run Configuration → run 添加上述指令
tasks.withType(org.bytedeco.gradle.javacpp.BuildTask).configureEach {
    println "javacppPlatform=$javacppPlatform"
    def projdir = projectDir.getCanonicalPath();
    includePath=[projdir+File.separator+"src"+File.separator+"main"+File.separator+"cpp"+File.separator+"include"]
    if (javacppPlatform.startsWith("android")) {
        if(javacppPlatform =="android-arm"){
            linkPath = [projdir + "/libs/armeabi-v7a"];
        }else if(javacppPlatform =="android-arm64"){
            linkPath = [projdir + "/libs/arm64-v8a"];
        }
        def ndkPath = "D:\\Android\\Sdk\\ndk\\20.0.5594570"
        properties = "$javacppPlatform-clang"
        //使用ndk编译需要指定根目录和工具目录
        propertyKeysAndValues = ['platform.root'    : ndkPath,
                                 'platform.compiler': "${ndkPath}\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe".toString(),
        ]
        println("propertyKeysAndValues = ${propertyKeysAndValues}")
        test.enabled = false
        println("linkPath = ${linkPath}")
    }  else if (javacppPlatform.startsWith("windows")) {
        //build -PjavacppPlatform=windows-x86_64
        //build -PjavacppPlatform=windows-x86
        properties = "$javacppPlatform-mingw"
//        properties = "$javacppPlatform"

        if (javacppPlatform.startsWith("windows-x86_64")) {

//            linkPath = [projdir + "\\libs\\windows-x86_64"];
            linkPath = [projdir + "/javacppbuild/$javacppPlatform"];
            propertyKeysAndValues = [
                    'platform.compiler': "D:\\mingw\\mingw64\\bin\\gcc.exe".toString(),
                    'platform.compiler.output': '-D_JNI_IMPLEMENTATION_ -Wl,-Bstatic -lstdc++ -lgcc_eh -lpthread -Wl,-Bdynamic -Wl,--kill-at -Wall -fPIC -shared -o\u0020'
            ]
        } else {
//            linkPath = [projdir + "\\libs\\windows-x86"];
            linkPath = [projdir + "/javacppbuild/$javacppPlatform"];
            propertyKeysAndValues = [
                    'platform.compiler' : "D:\\mingw\\mingw32\\bin\\gcc.exe".toString(),
                    'platform.compiler.output' : '-D_JNI_IMPLEMENTATION_ -Wl,-Bstatic -lstdc++ -lgcc_eh -lpthread -Wl,-Bdynamic -Wl,--kill-at -Wall -fPIC -shared -o\u0020'
            ]
        }
        println("linkPath = ${linkPath}")
        println("propertyKeysAndValues = ${propertyKeysAndValues}")
        test.enabled = false

    }else if(javacppPlatform.startsWith("linux-x86_64")){
        linkPath = [projdir + "/javacppbuild/linux-x86_64"];
    }else if(javacppPlatform.startsWith("linux-arm64")){
        linkPath = [projdir + "/javacppbuild/linux-arm64"];
    }else if(javacppPlatform.startsWith("linux-mips64el")){
        linkPath = [projdir + "/javacppbuild/linux-mips64el"];
    }
}

jar {
    group = "${group}"
//    archiveVersion = "${version}"
}

javacppBuildParser {
    classOrPackageNames = ['com/kl/kcs/*']
    outputDirectory = file("$buildDir/generated/sources/javacpp/")
}

javacppBuildCompiler {
    deleteJniFiles = true // 编译完是否删除jni文件
    copyLibs = true // 是否拷贝引用的so文件到jar包中
}



mingw编译问题

  • 使用mingw编译会引入三个额外的库,在其他机器上找不到
    解决这个的办法是将这三个库静态链接
                    'platform.compiler.output' : '-D_JNI_IMPLEMENTATION_ -Wl,-Bstatic -lstdc++ -lgcc_eh -lpthread -Wl,-Bdynamic -Wl,--kill-at -Wall -fPIC -shared -o\u0020'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值