2025-11-14 17:52:46 +08:00
|
|
|
cmake_minimum_required(VERSION 3.18)
|
|
|
|
|
project(MyYoloSdk CXX)
|
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
|
|
|
|
|
|
|
2025-11-14 18:22:41 +08:00
|
|
|
if(WIN32)
|
2025-11-14 20:21:04 +08:00
|
|
|
find_package(JNI COMPONENTS JNI REQUIRED)
|
2025-11-14 18:22:41 +08:00
|
|
|
message(STATUS "Configuring for Windows (using vcpkg OpenCV + manual ONNX)")
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
find_package(OpenCV REQUIRED)
|
2025-11-14 17:52:46 +08:00
|
|
|
|
2025-11-14 18:22:41 +08:00
|
|
|
#
|
|
|
|
|
set(ORT_MANUAL_PATH ${CMAKE_SOURCE_DIR}/../prebuilt_libs/onnxruntime-win-x64-1.23.2)
|
|
|
|
|
|
|
|
|
|
elseif(UNIX)
|
2025-11-14 20:21:04 +08:00
|
|
|
set(JNI_INCLUDE_DIRS
|
|
|
|
|
"/usr/lib/jvm/java-11-openjdk-amd64/include"
|
|
|
|
|
"/usr/lib/jvm/java-11-openjdk-amd64/include/linux"
|
|
|
|
|
)
|
|
|
|
|
set(JNI_LIBRARIES "/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so")
|
2025-11-14 18:22:41 +08:00
|
|
|
message(STATUS "Configuring for Linux (using apt OpenCV + manual ONNX)")
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
find_package(OpenCV REQUIRED)
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
set(ORT_MANUAL_PATH ${CMAKE_SOURCE_DIR}/../prebuilt_libs/onnxruntime-linux-x64-1.23.2)
|
|
|
|
|
endif()
|
2025-11-14 17:52:46 +08:00
|
|
|
|
2025-11-14 18:22:41 +08:00
|
|
|
|
|
|
|
|
# --- 3.
|
2025-11-14 17:52:46 +08:00
|
|
|
#
|
|
|
|
|
find_path(ONNXRuntime_INCLUDE_DIRS
|
|
|
|
|
NAMES onnxruntime_cxx_api.h
|
|
|
|
|
HINTS ${ORT_MANUAL_PATH}/include
|
|
|
|
|
)
|
|
|
|
|
find_library(ONNXRuntime_LIBRARY
|
|
|
|
|
NAMES onnxruntime
|
|
|
|
|
HINTS ${ORT_MANUAL_PATH}/lib
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
#
|
2025-11-14 18:22:41 +08:00
|
|
|
if(NOT OpenCV_FOUND)
|
|
|
|
|
message(FATAL_ERROR "Failed to find OpenCV. On Linux, run 'sudo apt install libopencv-dev'. On Windows, ensure vcpkg is setup.")
|
|
|
|
|
endif()
|
2025-11-14 17:52:46 +08:00
|
|
|
if(NOT ONNXRuntime_INCLUDE_DIRS OR NOT ONNXRuntime_LIBRARY)
|
|
|
|
|
message(FATAL_ERROR "Failed to find manual ONNX Runtime at ${ORT_MANUAL_PATH}")
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-11-14 18:22:41 +08:00
|
|
|
message(STATUS "Found OpenCV: ${OpenCV_LIBS}")
|
|
|
|
|
message(STATUS "Found ONNX Runtime Include: ${ONNXRuntime_INCLUDE_DIRS}")
|
|
|
|
|
message(STATUS "Found ONNX Runtime Library: ${ONNXRuntime_LIBRARY}")
|
2025-11-14 17:52:46 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# --- 4.
|
|
|
|
|
add_library(my_yolo_sdk SHARED
|
|
|
|
|
src/YoloCore.cpp
|
|
|
|
|
src/YoloSdk_JNI.cpp
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# --- 5.
|
|
|
|
|
target_include_directories(my_yolo_sdk PUBLIC
|
|
|
|
|
${JNI_INCLUDE_DIRS}
|
|
|
|
|
${OpenCV_INCLUDE_DIRS}
|
2025-11-14 18:22:41 +08:00
|
|
|
${ONNXRuntime_INCLUDE_DIRS}
|
2025-11-14 17:52:46 +08:00
|
|
|
include
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
target_link_libraries(my_yolo_sdk PRIVATE
|
|
|
|
|
${JNI_LIBRARIES}
|
2025-11-14 18:22:41 +08:00
|
|
|
${OpenCV_LIBS} #
|
|
|
|
|
${ONNXRuntime_LIBRARY}
|
2025-11-14 17:52:46 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# --- 6.
|
|
|
|
|
if(UNIX)
|
2025-11-14 18:22:41 +08:00
|
|
|
message(STATUS "Setting RPATH for Linux")
|
2025-11-14 17:52:46 +08:00
|
|
|
set_target_properties(my_yolo_sdk PROPERTIES
|
2025-11-14 18:22:41 +08:00
|
|
|
INSTALL_RPATH "$ORIGIN" #
|
2025-11-14 17:52:46 +08:00
|
|
|
)
|
|
|
|
|
endif()
|