diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2021-08-11 23:06:11 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 23:06:11 +0000 |
commit | 6795178b3f5a1daff130e374e5046ce75c55c1ce (patch) | |
tree | 55f7fbc7428031e71875c8a621eefd57b61c0dfa /cmake | |
parent | adef75d81c7606dd69f5d619c577b634b2868070 (diff) | |
parent | 07e64c37487b6c99b0425b8e4014af63529459cf (diff) |
Merge pull request #1307 from DaWelter/improved-onnx-findscript
cmake: improve the FindONNXRuntime script and install the ONNX dll
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindONNXRuntime.cmake | 71 |
1 files changed, 55 insertions, 16 deletions
diff --git a/cmake/FindONNXRuntime.cmake b/cmake/FindONNXRuntime.cmake index 7350ec0d..44bc46c1 100644 --- a/cmake/FindONNXRuntime.cmake +++ b/cmake/FindONNXRuntime.cmake @@ -8,7 +8,9 @@ # Input variables # --------------- # -# ONNXRuntime_ROOT Set root installation. +# ONNXRuntime_ROOT Set root installation. This is an environment +# variable +# ONNXRuntime_DIR CMake variable to set the installation root. # # Output variable # --------------- @@ -17,26 +19,63 @@ # ONNXRuntime_LIBRARIES Component libraries to be linked. # ONNXRuntime_INCLUDE_DIRS Include directories. -find_library(ORT_LIB onnxruntime +set(ONNXRuntime_DIR CACHE PATH "Root directory of the ONNX Runtime installation") + +# This script is mostly inspired by the guide there: +# https://gitlab.kitware.com/cmake/community/-/wikis/doc/tutorials/How-To-Find-Libraries +# Finding of the DLLs was added so we can install them with the application. +# We adhere to modern CMake standards and also define an import library. + +find_library(ONNXRuntime_LIBRARY onnxruntime + HINTS + ${ONNXRuntime_DIR} + PATHS + ${CMAKE_INSTALL_PREFIX} + PATH_SUFFIXES lib lib64 bin CMAKE_FIND_ROOT_PATH_BOTH) -find_path(ORT_INCLUDE onnxruntime_cxx_api.h +if(WIN32) + SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".DLL") + find_library(ONNXRuntime_RUNTIME onnxruntime + HINTS + ${ONNXRuntime_DIR} + PATHS + ${CMAKE_INSTALL_PREFIX} + PATH_SUFFIXES lib lib64 bin + CMAKE_FIND_ROOT_PATH_BOTH) +else() + SET(ONNXRuntime_RUNTIME ${ONNXRuntime_LIBRARY}) +endif() + +find_path(ONNXRuntime_INCLUDE_DIR onnxruntime_cxx_api.h + HINTS + ${ONNXRuntime_DIR}/include + ${ONNXRuntime_DIR} + PATHS + ${CMAKE_INSTALL_PREFIX}/include PATH_SUFFIXES onnxruntime/core/session CMAKE_FIND_ROOT_PATH_BOTH) -if(ORT_LIB AND ORT_INCLUDE) - set(ONNXRuntime_FOUND TRUE) - 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) + +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set ONNXRuntime_FOUND to TRUE +# if all listed variables are TRUE +find_package_handle_standard_args(ONNXRuntime DEFAULT_MSG + ONNXRuntime_LIBRARY ONNXRuntime_INCLUDE_DIR ONNXRuntime_RUNTIME) + +if(ONNXRuntime_FOUND) + if(NOT TARGET onnxruntime::onnxruntime) + # Following this quide: + # https://cmake.org/cmake/help/git-stage/guide/importing-exporting/index.html#importing-libraries + add_library(onnxruntime::onnxruntime SHARED IMPORTED) + set_target_properties(onnxruntime::onnxruntime PROPERTIES + IMPORTED_LOCATION "${ONNXRuntime_RUNTIME}" + INTERFACE_INCLUDE_DIRECTORIES "${ONNXRuntime_INCLUDE_DIR}" + IMPORTED_IMPLIB "${ONNXRuntime_LIBRARY}") endif() endif() -unset(ORT_LIB CACHE) -unset(ORT_INCLUDE CACHE) +mark_as_advanced(ONNXRuntime_INCLUDE_DIR ONNXRuntime_LIBRARY ONNXRuntime_RUNTIME) + +set(ONNXRuntime_INCLUDE_DIRS ${ONNXRuntime_INCLUDE_DIR}) +set(ONNXRuntime_LIBRARIES ${ONNXRuntime_LIBRARY})
\ No newline at end of file |