11cmake_minimum_required (VERSION 3.17.0 )
22
3- set (TRT_VERSION
4- $ENV{TRT_VERSION}
5- CACHE
6- STRING
7- "TensorRT version, e.g. \" 8.6.1.6\" or \" 8.6.1.6+cuda12.0.1.011\" , etc" )
8-
93function (_guess_path var_name required_files )
104 set (_result "" )
115
@@ -44,56 +38,84 @@ function(_guess_path var_name required_files)
4438 PARENT_SCOPE )
4539endfunction ()
4640
47- # find TensorRT include folder
48- if (NOT DEFINED TensorRT_INCLUDE_DIR)
49- if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" )
50- _guess_path (
51- TensorRT_INCLUDE_DIR "NvInfer.h" "/usr/include/aarch64-linux-gnu"
52- "/usr/include" "/usr/local/cuda/targets/aarch64-linux/include" )
53- else ()
54- _guess_path (
55- TensorRT_INCLUDE_DIR "NvInfer.h"
56- "/usr/local/tensorrt/targets/x86_64-linux-gnu/include"
57- "/usr/include/x86_64-linux-gnu" "/usr/include" )
58- endif ()
59- message (STATUS "TensorRT includes: ${TensorRT_INCLUDE_DIR} " )
41+ # add library
42+ add_library (TensorRT IMPORTED INTERFACE )
43+ add_library (TensorRT::TensorRT ALIAS TensorRT )
44+
45+ set (TRT_VERSION
46+ CACHE
47+ STRING
48+ "TensorRT version, e.g. \" 8.6.1.6\" or \" 8.6.1.6+cuda12.0.1.011\" , \" 8.6.1.6.Windows10.x86_64.cuda-12.0\" etc"
49+ )
50+
51+ if (NOT TRT_VERSION STREQUAL "" AND NOT $ENV{TRT_VERSION} STREQUAL "" )
52+ message (
53+ WARNING
54+ "TRT_VERSION defined by cmake and environment variable both, using the later one"
55+ )
6056endif ()
6157
62- # find TensorRT library folder
63- if (NOT TensorRT_LIBRARY_DIR)
64- if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" )
65- _guess_path (
66- TensorRT_LIBRARY_DIR "libnvinfer.so;libnvinfer_plugin.so"
67- "/usr/lib/aarch64-linux-gnu;/usr/lib/aarch64-linux-gnu/tegra" "/usr/lib" )
68- else ()
69- _guess_path (
70- TensorRT_LIBRARY_DIR
71- "libnvinfer.so;libnvinfer_plugin.so"
72- "/usr/lib/x86_64-linux-gnu;/usr/local/tensorrt/targets/x86_64-linux-gnu/lib;/usr/lib"
58+ if (NOT $ENV{TRT_VERSION} STREQUAL "" )
59+ set (TRT_VERSION $ENV{TRT_VERSION} )
60+ endif ()
61+
62+ string (REGEX MATCH "([0-9]+)" _match ${TRT_VERSION} )
63+ set (TRT_MAJOR_VERSION "${_match} " )
64+ unset (_match)
65+
66+ if (WIN32 )
67+ set (TensorRT_DIR "C:/Program Files/TensorRT-${TRT_VERSION} " )
68+ if (NOT EXISTS "${TensorRT_DIR} " )
69+ message (
70+ FATAL_ERROR
71+ "TensorRT_DIR=${TensorRT_DIR} does not exist!"
7372 )
7473 endif ()
75- message (STATUS "TensorRT libraries: ${TensorRT_LIBRARY_DIR} " )
76- endif ()
7774
78- set (TensorRT_LIBRARIES)
75+ if (${TRT_MAJOR_VERSION} GREATER_EQUAL 10)
76+ set (_modules nvinfer_10 nvinfer_plugin_10 nvinfer_vc_plugin_10
77+ nvinfer_dispatch_10 nvinfer_lean_10)
78+ message (DEBUG "Using ${_modules} " )
79+ else ()
80+ set (_modules nvinfer nvinfer_plugin nvinfer_vc_plugin nvinfer_dispatch
81+ nvinfer_lean)
82+ endif ()
7983
80- message (STATUS "Found TensorRT lib: ${TensorRT_LIBRARIES} " )
84+ set (TensorRT_LIBRARY_DIR "${TensorRT_DIR} /lib" )
85+ set (TensorRT_INCLUDE_DIR "${TensorRT_DIR} /include" )
86+ elseif (UNIX )
87+ string (TOLOWER "${CMAKE_SYSTEM_PROCESSOR} " _trt_arch)
88+ set (_trt_include_candidates)
89+ if (_trt_arch MATCHES "^(aarch64|arm64|arch64)$" )
90+ set (_trt_include_candidates "/usr/include/aarch64-linux-gnu" "/usr/include"
91+ "/usr/local/cuda/targets/aarch64-linux/include" )
92+ set (_trt_library_candidates
93+ "/usr/local/tensorrt/targets/aarch64-linux-gnu/lib"
94+ "/usr/lib/aarch64-linux-gnu" "/usr/lib/aarch64-linux-gnu/tegra"
95+ "/usr/lib" )
96+ elseif (_trt_arch MATCHES "^(x86_64|amd64)$" )
97+ set (_trt_include_candidates
98+ "/usr/local/tensorrt/targets/x86_64-linux-gnu/include"
99+ "/usr/include/x86_64-linux-gnu" "/usr/include" )
100+ set (_trt_library_candidates
101+ "/usr/local/tensorrt/targets/x86_64-linux-gnu/lib"
102+ "/usr/lib/x86_64-linux-gnu" "/usr/lib" )
103+ else ()
104+ message (FATAL_ERROR "Unknown architecture" )
105+ endif ()
81106
82- # process for different TensorRT version
83- if (DEFINED TRT_VERSION AND NOT TRT_VERSION STREQUAL "" )
84- string (REGEX MATCH "([0-9]+)" _match ${TRT_VERSION} )
85- set (TRT_MAJOR_VERSION "${_match} " )
86107 set (_modules nvinfer nvinfer_plugin)
87- unset (_match)
88-
89- if (TRT_MAJOR_VERSION GREATER_EQUAL 8)
108+ if (${TRT_MAJOR_VERSION} GREATER_EQUAL 8)
90109 list (APPEND _modules nvinfer_vc_plugin nvinfer_dispatch nvinfer_lean)
91110 endif ()
92- else ()
93- message (FATAL_ERROR "Please set a environment variable \" TRT_VERSION\" " )
111+
112+ _guess_path (TensorRT_LIBRARY_DIR "libnvinfer.so;libnvinfer_plugin.so"
113+ ${_trt_library_candidates} )
114+ message (STATUS "TensorRT libraries: ${TensorRT_LIBRARY_DIR} " )
115+ _guess_path (TensorRT_INCLUDE_DIR "NvInfer.h" ${_trt_include_candidates} )
116+ message (STATUS "TensorRT includes: ${TensorRT_INCLUDE_DIR} " )
94117endif ()
95118
96- # find and add all modules of TensorRT into list
97119foreach (lib IN LISTS _modules)
98120 find_library (
99121 TensorRT_${lib}_LIBRARY
@@ -102,11 +124,10 @@ foreach(lib IN LISTS _modules)
102124 list (APPEND TensorRT_LIBRARIES ${TensorRT_${lib} _LIBRARY})
103125endforeach ()
104126
105- # make the "TensorRT target"
106- add_library (TensorRT IMPORTED INTERFACE )
107- add_library (TensorRT::TensorRT ALIAS TensorRT )
108127target_link_libraries (TensorRT INTERFACE ${TensorRT_LIBRARIES} )
109128
129+ message (STATUS "Found TensorRT libs: ${TensorRT_LIBRARIES} " )
130+
110131set_target_properties (
111132 TensorRT
112133 PROPERTIES C_STANDARD 17
@@ -119,3 +140,6 @@ set_target_properties(
119140
120141unset (TRT_MAJOR_VERSION)
121142unset (_modules)
143+ unset (_trt_include_candidates)
144+ unset (_trt_library_candidates)
145+ unset (_trt_arch)
0 commit comments