모든 플랫폼(Android, iOS, Linux, Mac OS X, Windows)의 빌드 상태:
사용자 정의 사전 설정에 대한 상업적 지원 및 유료 서비스:
JavaCPP 사전 설정 모듈에는 널리 사용되는 C/C++ 라이브러리에 대한 Java 구성 및 인터페이스 클래스가 포함되어 있습니다. org.bytedeco.<moduleName>.presets
패키지의 구성 파일은 Parser
C/C++ 헤더 파일에서 org.bytedeco.<moduleName>
패키지를 대상으로 하는 Java 인터페이스 파일을 생성하는 데 사용됩니다. 필수 JNI 라이브러리를 생성하기 위한 Generator
및 기본 C++ 컴파일러. 또한 도우미 클래스를 사용하면 Android를 포함한 Java 플랫폼에서 해당 기능을 더 쉽게 사용할 수 있습니다.
오리엔테이션 목적으로 이 저장소의 문서는 2개 수준으로 분할되는 것으로 생각할 수 있습니다.
javacpp-presets
모듈 자체에 속하며, 이 상위 README.md 파일에는 다운로드, 공통 요구 사항, 설치 절차 및 빌드 지침과 관련된 문제를 해결하기 위해 모든 모듈에 적용 가능한 일반 정보가 포함되어 있습니다. 각 하위 디렉터리에 있는 해당 README.md 파일에는 각 모듈의 사전 설정 및 패키지에 대한 API 문서, 특정 요구 사항, pom.xml
파일의 종속성, 샘플 사용 코드에 관한 추가 정보, 링크 및 참고 사항이 포함되어 있습니다. 모든 사전 설정의 완성도가 동일하지는 않으며, 타사 라이브러리의 API를 기반으로 하기 때문에 스타일과 레이아웃도 서로 다를 수 있다는 점에 유의하세요.
새 사전 설정을 만드는 방법에 대한 자세한 내용은 위키 페이지를 참조하세요. 현재 추가 문서가 부족하므로 메일링 리스트나 토론 포럼에 자유롭게 질문하시기 바랍니다.
모든 하위 모듈에 대한 바이너리와 지원되는 모든 플랫폼(Android, iOS, Linux, Mac OS X 및 Windows)용 빌드가 포함된 JAR 파일은 Maven Central Repository에서 얻을 수 있습니다. 이러한 JAR 파일이 포함된 아카이브도 릴리스로 제공됩니다.
JAR 파일을 수동으로 설치하려면 아래 수동 설치 섹션의 지침을 따르십시오.
다음을 사용하여 모든 항목을 자동으로 다운로드하고 설치할 수도 있습니다.
pom.xml
파일 내부) < dependency >
< groupId >org.bytedeco</ groupId >
< artifactId >${moduleName}-platform</ artifactId >
< version >${moduleVersion}-1.5.11</ version >
</ dependency >
build.gradle.kts
또는 build.gradle
파일 내부) dependencies {
implementation( " org.bytedeco: $m oduleName -platform: $m oduleVersion -1.5.11 " )
}
project.clj
파일 내부) :dependencies [
[~( symbol ( str " org.bytedeco/ " moduleName " -platform " )) ~( str moduleVersion " -1.5.11 " )]
]
build.sbt
파일 내부) libraryDependencies += " org.bytedeco " % moduleName + " -platform " % moduleVersion + " -1.5.11 "
여기서 moduleName
및 moduleVersion
변수는 원하는 모듈에 해당합니다. 이는 모든 플랫폼에 대한 바이너리를 다운로드하지만, 단 하나의 플랫폼에 대한 바이너리를 얻으려면 javacpp.platform
시스템 속성( -D
명령줄 옵션을 통해)을 android-arm
, linux-x86_64
, macosx-x86_64
, windows-x86_64
와 같은 것으로 설정할 수 있습니다. windows-x86_64
등. 둘 이상의 플랫폼을 지정할 수도 있습니다. 종속성 수 줄이기의 예를 참조하세요. Gradle 사용자가 사용할 수 있는 또 다른 옵션은 Gradle JavaCPP이며, 마찬가지로 Scala 사용자에게는 SBT-JavaCPP가 있습니다.
JavaCPP 사전 설정을 사용하려면 다음 소프트웨어를 다운로드하여 설치해야 합니다.
또한 Android의 경우 JavaCPP 사전 설정은 다음 사항에도 의존합니다.
javacpp.jar
외에도 원하는 모든 JAR 파일( opencv*.jar
, ffmpeg*.jar
등)을 클래스 경로 어딘가에 넣기만 하면 됩니다. 사전 빌드된 아티팩트로 사용 가능한 JAR 파일은 JavaCPP와 함께 사용하기 위한 것입니다. Linux용 바이너리는 Ubuntu로 구축되었으므로 현재 사용 중인 대부분의 배포판에서 작동합니다. 일반적인 경우에 대한 좀 더 구체적인 지침은 다음과 같습니다.
NetBeans(Java SE 7 이상):
Eclipse(Java SE 7 이상):
Visual Studio Code(Java SE 7 이상):
+
클릭합니다.IntelliJ IDEA(Android 7.0 이상):
app/libs
하위 디렉터리에 복사합니다.+
클릭하고 "2 파일 종속성"을 선택합니다.libs
하위 디렉터리에서 모든 JAR 파일을 선택합니다. 그 후에는 org.bytedeco.<moduleName>
패키지에 있는 인터페이스 클래스를 통해 해당 C/C++ API에 거의 투명하게 액세스할 수 있습니다. 실제로 Parser
C/C++ 헤더 파일의 코드 주석을 Javadoc에서 사용할 준비가 된 Java 인터페이스 파일로 변환합니다. 그러나 아직 번역이 필요하므로 원본 문서 페이지를 참조하는 것이 좋습니다. 예를 들어 OpenCV 및 FFmpeg용 항목은 다음 온라인에서 찾을 수 있습니다.
위에서 사용 가능한 바이너리 파일이 요구 사항에 충분하지 않은 경우 소스 코드에서 다시 빌드해야 할 수도 있습니다. 이를 위해 Java측 프로젝트 파일을 Maven 모듈로 생성하였다. 기본적으로 Maven 빌드는 cppbuild.sh
스크립트를 사용하여 네이티브 C/C++ 측에 네이티브 라이브러리를 설치하지만 다른 방법으로 설치할 수도 있습니다.
또한 위키 페이지에서 주요 플랫폼에 권장되는 빌드 환경에 대한 추가 정보를 찾을 수 있습니다.
JavaCPP 사전 설정은 Java용 강력한 빌드 시스템인 Maven에 의존하므로 빌드를 시도하기 전에 다음을 설치하고 읽어보십시오.
각 하위 모듈은 기본적으로 아래 설명된 포함된 cppbuild.sh
스크립트를 사용하여 cppbuild
하위 디렉터리에 해당 기본 라이브러리를 설치합니다. 시스템의 다른 위치에 이미 설치된 기본 라이브러리를 사용하려면 cppbuild
가 아닌 다른 설치 디렉터리를 pom.xml
파일이나 .java
구성 파일에 지정할 수도 있습니다. 다음 버전이 지원됩니다:
모든 것이 설치되고 구성되면 간단히 실행하십시오.
$ mvn install --projects .,opencv,ffmpeg,etc. -Djavacpp.platform.root=/path/to/android-ndk/
상위 pom.xml
파일이 포함된 디렉터리 내에서 명령에 원하는 하위 모듈만 지정하고 선행 마침표 "."는 사용하지 않습니다. 쉼표로 구분된 프로젝트 목록에서 상위 pom.xml
파일 자체가 설치되지 않을 수 있습니다. ( -Djavacpp.platform.root=...
옵션은 Android 빌드에만 필요합니다.) 또한 cppbuild.sh
스크립트 실행을 건너뛰려면 -Djavacpp.cppbuild.skip
옵션으로 지정하십시오. -Djavacpp.platform=...
외에도 일부 사전 설정은 -Djavacpp.platform.extension=-gpu
사용하여 CUDA에 대해 또는 -Djavacpp.platform.extension=-python
사용하여 CPython에 대해 구축할 수도 있습니다. 자세한 내용은 pom.xml
파일 내부의 설명을 참조하세요. "플랫폼" 하위 디렉터리에서 유사한 명령을 사용하여 "플랫폼" 아티팩트를 설치할 수도 있습니다.
$ cd platform
$ mvn install --projects ../opencv/platform,../ffmpeg/platform,etc. -Djavacpp.platform.host
cppbuild.sh
스크립트스크립트를 실행하면 여러 플랫폼에 기본 라이브러리를 쉽게 설치할 수 있지만 추가 소프트웨어가 필요합니다.
위 작업 순서대로 스크립트는 Maven 빌드 수명주기의 일부로 자동으로 시작되지만 수동으로 실행할 수도 있습니다.
$ ANDROID_NDK=/path/to/android-ndk/ bash cppbuild.sh [-platform < name > ] [-extension < name > ] < install | clean > [projects]
가능한 플랫폼 이름은 다음과 같습니다:
android-arm
android-arm64
android-x86
android-x86_64
ios-arm64
ios-x86_64
linux-armhf
linux-arm64
linux-ppc64le
linux-x86
linux-x86_64
macosx-arm64
macosx-x86_64
windows-x86
windows-x86_64
일부 빌드에서 지원되는 -gpu
확장을 사용하려면 CUDA도 설치해야 합니다. ( ANDROID_NDK
변수는 Android 빌드에만 필요합니다.) 스크립트는 필요에 따라 적절한 사이트에서 소스 아카이브를 다운로드합니다.
FPU가 없는 Android 장치용 바이너리를 컴파일하려면 먼저 이것이 원하는 것인지 확인하세요. FPU가 없으면 OpenCV 또는 FFmpeg의 성능은 수용할 수 없습니다. 계속해서 해당 경로를 따르려면 "armeabi-v7a"를 "armeabi"로 바꾸고 "-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"을 "-march=armv5te -mtune"으로 바꾸십시오. =xscale -msoft-float", 다양한 파일 내부.
JavaCPP는 시스템에 설치된 기본 라이브러리를 선택할 수 있지만 스크립트는 여러 플랫폼에서 빌드 프로세스를 용이하게 하기 위해 존재합니다. 또한 JavaCPP는 기본 라이브러리를 복사하고 런타임 시 Maven이 생성한 JAR 파일에서 이를 로드할 수 있습니다. 이는 독립 실행형 애플리케이션이나 Java 애플릿에 유용한 기능입니다. 또한 다음과 같은 트릭이 JNLP에서 작동합니다.
< resources os = " Linux " arch = " x86 i386 i486 i586 i686 " >
< jar href = " lib/opencv-linux-x86.jar " />
< jar href = " lib/ffmpeg-linux-x86.jar " />
</ resources >
< resources os = " Linux " arch = " x86_64 amd64 " >
< jar href = " lib/opencv-linux-x86_64.jar " />
< jar href = " lib/ffmpeg-linux-x86_64.jar " />
</ resources >
이를 테스트해 준 Jose Gómez에게 감사드립니다!
어떤 종류의 기여도 환영합니다! 현재 Parser
기능은 제한되어 있으므로 OpenCV, Caffe 또는 TensorFlow의 파일보다 훨씬 복잡한 대형 C++ 헤더 파일을 성공적으로 구문 분석할 수 있을 정도로 점진적으로 개선할 계획입니다. 또한 개선됩니다. 따라서 저는 특히 다음 다섯 가지 작업에 대해 특별한 순서 없이 도움을 구하고 있습니다.
Parser
개선(LLVM 및 Clang에 대한 사전 설정 사용)linux-armhf
와 같이 더 많은 플랫폼에 대한 빌드 제공기여하려면 끌어오기 요청을 포크하여 생성하거나 제안 사항을 새로운 "문제"로 게시하세요. 귀하의 기여에 미리 감사드립니다!
프로젝트 리더: Samuel Audet gmail.com at
samuel.audet
개발자 사이트: https://github.com/bytedeco/javacpp-presets
토론 그룹: http://groups.google.com/group/javacpp-project