sishu-yolo-sdk/cpp/CMakeLists.txt

83 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 3.18)
project(MyYoloSdk CXX)
set(CMAKE_CXX_STANDARD 17)
if(WIN32)
find_package(JNI COMPONENTS JNI REQUIRED)
message(STATUS "Configuring for Windows (using vcpkg OpenCV + manual ONNX)")
#
find_package(OpenCV REQUIRED)
#
set(ORT_MANUAL_PATH ${CMAKE_SOURCE_DIR}/../prebuilt_libs/onnxruntime-win-x64-1.23.2)
elseif(UNIX)
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")
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()
# --- 3.
#
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
)
#
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()
if(NOT ONNXRuntime_INCLUDE_DIRS OR NOT ONNXRuntime_LIBRARY)
message(FATAL_ERROR "Failed to find manual ONNX Runtime at ${ORT_MANUAL_PATH}")
endif()
message(STATUS "Found OpenCV: ${OpenCV_LIBS}")
message(STATUS "Found ONNX Runtime Include: ${ONNXRuntime_INCLUDE_DIRS}")
message(STATUS "Found ONNX Runtime Library: ${ONNXRuntime_LIBRARY}")
# --- 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}
${ONNXRuntime_INCLUDE_DIRS}
include
)
target_link_libraries(my_yolo_sdk PRIVATE
${JNI_LIBRARIES}
${OpenCV_LIBS} #
${ONNXRuntime_LIBRARY}
)
# --- 6.
if(UNIX)
message(STATUS "Setting RPATH for Linux")
set_target_properties(my_yolo_sdk PROPERTIES
INSTALL_RPATH "$ORIGIN" #
)
endif()