From 489b49e98f013ca495ee8314718df24b67b0e825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Doll=C3=A9?= Date: Sun, 1 Aug 2021 16:02:00 +0200 Subject: [PATCH] Fix link library - Address review comment https://github.com/opentrack/opentrack/pull/1306#discussion_r680484878 - Update ONNXRuntime module to use a specific `onnxruntime` target. - Use OpenCV components instead. NOTE: ONNXRuntinme may provide their own ONNXRuntimeConfig.cmake and ONNXRuntimeVersion.cmake in the future. See https://github.com/microsoft/onnxruntime/issues/3124 for reference --- cmake/FindONNXRuntime.cmake | 23 ++++++++++++++++------- tracker-neuralnet/CMakeLists.txt | 26 ++++++++++++++++---------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/cmake/FindONNXRuntime.cmake b/cmake/FindONNXRuntime.cmake index 733bdb362..f485ecdd8 100644 --- a/cmake/FindONNXRuntime.cmake +++ b/cmake/FindONNXRuntime.cmake @@ -13,10 +13,9 @@ # Output variable # --------------- # -# ONNXRuntime_FOUND Variable indicating that ONNXRuntime has been -# found. -# ONNXRuntime_LIBRARIES Library implementing ONNXRuntime -# ONNXRuntime_INCLUDE_DIRS Headers for ONNXRuntime +# ONNXRuntime_FOUND True if headers and requested libraries were found +# ONNXRuntime_LIBRARIES Component libraries to be linked. +# ONNXRuntime_INCLUDE_DIRS Include directories. find_library(ORT_LIB onnxruntime CMAKE_FIND_ROOT_PATH_BOTH) @@ -25,7 +24,17 @@ find_path(ORT_INCLUDE onnxruntime/core/session/onnxruntime_cxx_api.h if(ORT_LIB AND ORT_INCLUDE) set(ONNXRuntime_FOUND TRUE) - # For CMake output only - set(ONNXRuntime_LIBRARIES "${ORT_LIB}" CACHE STRING "ONNX Runtime libraries") - set(ONNXRuntime_INCLUDE_DIRS "${ORT_INCLUDE}" CACHE STRING "ONNX Runtime include path") + set(ONNXRuntime_INCLUDE_DIRS "${ORT_INCLUDE}") + + if(NOT TARGET onnxruntime) + add_library(onnxruntime UNKNOWN IMPORTED) + set_target_properties(onnxruntime PROPERTIES + IMPORTED_LOCATION "${ORT_LIB}" + INTERFACE_INCLUDE_DIRECTORIES "${ORT_INCLUDE}" + INTERFACE_LINK_LIBRARIES "onnxruntime") + list(APPEND ONNXRuntime_LIBRARIES onnxruntime) + endif() endif() + +unset(ORT_LIB CACHE) +unset(ORT_INCLUDE CACHE) diff --git a/tracker-neuralnet/CMakeLists.txt b/tracker-neuralnet/CMakeLists.txt index c38ba3d83..36395684a 100644 --- a/tracker-neuralnet/CMakeLists.txt +++ b/tracker-neuralnet/CMakeLists.txt @@ -1,19 +1,25 @@ include(opentrack-opencv) -find_package(OpenCV QUIET) +find_package(OpenCV QUIET COMPONENTS imgproc core imgcodecs calib3d) find_package(OpenMP QUIET) # Used to control number of onnx threads. find_package(ONNXRuntime QUIET) if(OpenCV_FOUND AND ONNXRuntime_FOUND AND OpenMP_FOUND) otr_module(tracker-neuralnet) - target_include_directories(${self} SYSTEM PUBLIC - ${OpenCV_INCLUDE_DIRS} "${ONNXRuntime_INCLUDE_DIRS}") - target_link_libraries(${self} "${ONNXRuntime_LIBRARIES}" - opentrack-cv opencv_imgproc opencv_core - opencv_imgcodecs opencv_calib3d - OpenMP::OpenMP_C) - + target_include_directories(${self} + SYSTEM PRIVATE + ${OpenCV_INCLUDE_DIRS} + ${ONNXRuntime_INCLUDE_DIRS} + ) + target_link_libraries(${self} + opentrack-cv + ${ONNXRuntime_LIBRARIES} + ${OpenCV_LIBS} + OpenMP::OpenMP_C + ) install( - FILES "models/head-localizer.onnx" "models/head-pose.onnx" + FILES "models/head-localizer.onnx" + "models/head-pose.onnx" DESTINATION "${opentrack-libexec}/models" - PERMISSIONS ${opentrack-perms-file}) + PERMISSIONS ${opentrack-perms-file} + ) endif()