-
Notifications
You must be signed in to change notification settings - Fork 73
/
xmake.lua
106 lines (85 loc) · 2.95 KB
/
xmake.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
-- 设置项目信息
set_project("TensorRT-YOLO")
set_version("4.3.0")
set_languages("cxx17")
set_allowedplats("windows", "linux")
-- 添加依赖
add_requires("python", {system = true})
add_requires("pybind11")
-- 添加编译规则
add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"})
add_rules("mode.release")
-- 定义选项
option("tensorrt")
set_showmenu(true)
set_description("TensorRT Path. Example: /usr/local/tensorrt")
on_check(function (option)
if not option:enabled() then
raise("TensorRT path is not set. Please specify the TensorRT path.")
end
end)
-- 定义一个函数来处理 TensorRT 和 CUDA 的配置
function configure_tensorrt(target)
if has_config("tensorrt") then
local tensorrt_path = get_config("tensorrt")
add_includedirs(path.join(tensorrt_path, "include"))
add_linkdirs(path.join(tensorrt_path, "lib"))
local libs = is_plat("windows") and os.exists(path.join(get_config("tensorrt"), "lib", "nvinfer_10.dll")) and "nvinfer_10 nvinfer_plugin_10 nvonnxparser_10" or "nvinfer nvinfer_plugin nvonnxparser"
add_links(libs:split("%s+"))
end
end
-- 定义一个函数来添加 CUDA 支持
function configure_cuda(target)
add_rules("cuda")
add_cugencodes("native")
add_cuflags("-allow-unsupported-compiler")
end
-- 定义一个函数来添加公共配置
function common_config(target)
-- 添加库目录
add_includedirs("$(projectdir)/include")
-- 添加文件
add_files(
"$(projectdir)/source/deploy/core/*.cpp",
"$(projectdir)/source/deploy/utils/*.cpp",
"$(projectdir)/source/deploy/vision/*.cpp",
"$(projectdir)/source/deploy/vision/*.cu"
)
-- 添加 cuda
configure_cuda(target)
-- 添加TensorRT链接目录和链接库
configure_tensorrt(target)
end
includes("plugin/xmake.lua")
-- 定义目标
target("deploy")
-- 设置目标类型
set_kind("shared")
-- 设置编译路径
set_targetdir("$(projectdir)/lib")
-- 公共配置
common_config("deploy")
-- 定义目标
target("pydeploy")
-- 定义规则
add_rules("python.library")
-- 添加依赖
add_packages("pybind11")
-- 设置编译路径
set_targetdir("$(projectdir)/tensorrt_yolo/libs")
-- 公共配置
common_config("pydeploy")
-- 添加文件
add_files("$(projectdir)/source/deploy/pybind/deploy.cpp")
-- 在配置阶段查找 CUDA SDK
local cuda
on_load(function (target)
import("detect.sdks.find_cuda")
cuda = assert(find_cuda(nil, {verbose = true}), "Cuda SDK not found!")
-- 设置配置变量
target:set("configvar", "CUDA_PATH", cuda.bindir)
target:set("configvar", "TENSORRT_PATH", "$(tensorrt)")
-- 设置配置目录和配置文件
target:set("configdir", "$(projectdir)/tensorrt_yolo")
target:add("configfiles", "$(projectdir)/tensorrt_yolo/c_lib_wrap.py.in")
end)