122 lines
3.2 KiB
Lua
122 lines
3.2 KiB
Lua
-- 设置项目信息
|
||
set_project("SJTU-RM-CV")
|
||
set_version("1.0.0")
|
||
set_languages("c++17")
|
||
|
||
-- 设置构建模式
|
||
set_rules("mode.release")
|
||
set_optimize("fastest")
|
||
|
||
--导出构建指令
|
||
add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"})
|
||
|
||
-- 定义宏
|
||
add_defines('PATH=\"$(projectdir)\"')
|
||
add_defines("Linux")
|
||
|
||
-- 检查是否存在 config.h
|
||
if os.isfile("others/include/config/config.h") or os.isfile("others/include/config.h") then
|
||
add_defines("WITH_CONFIG")
|
||
print("Found config.h")
|
||
end
|
||
|
||
-- 添加依赖
|
||
add_requires("eigen", {system = false})
|
||
add_requires("pthread")
|
||
|
||
--- OpenCV 4.6.0 配置(启用 ffmpeg 和 contrib)
|
||
add_requires("opencv", {
|
||
system = false,
|
||
configs = {
|
||
ffmpeg = false,
|
||
eigen = true,
|
||
png = true,
|
||
jpeg = true,
|
||
webp = false,
|
||
tiff = false,
|
||
quirc = false,
|
||
opengl = false,
|
||
protobuf = false,
|
||
bundled = true,
|
||
gtk = true
|
||
}
|
||
})
|
||
|
||
-- 目标配置
|
||
target("run")
|
||
set_kind("binary")
|
||
|
||
-- 添加源文件
|
||
add_files("main.cpp")
|
||
add_files("others/src/*.cpp")
|
||
add_files("others/src/camera/*.cpp")
|
||
add_files("energy/src/energy/*.cpp")
|
||
add_files("energy/src/energy/*/*.cpp")
|
||
add_files("armor/src/armor_finder/*.cpp")
|
||
add_files("armor/src/armor_finder/*/*.cpp")
|
||
add_files("armor/src/show_images/*.cpp")
|
||
|
||
-- 添加头文件搜索路径
|
||
add_includedirs("others/include")
|
||
add_includedirs("others/include/camera")
|
||
add_includedirs("others/include/config")
|
||
add_includedirs("energy/include")
|
||
add_includedirs("energy/include/energy")
|
||
add_includedirs("armor/include")
|
||
add_includedirs("armor/include/armor_finder")
|
||
add_includedirs("armor/include/armor_finder/classifier")
|
||
add_includedirs("armor/include/show_images")
|
||
|
||
-- 添加依赖包
|
||
add_packages("pthread", "eigen", "opencv")
|
||
|
||
-- 添加链接目录
|
||
add_linkdirs("others")
|
||
|
||
-- 根据平台链接相机 SDK
|
||
if is_plat("linux") then
|
||
add_links("MVSDK")
|
||
print("current platform: Linux")
|
||
elseif is_plat("windows") then
|
||
add_links("MVCAMSDK_X64")
|
||
print("current platform: Windows")
|
||
elseif is_plat("macosx") then
|
||
add_links("mvsdk")
|
||
print("current platform: Mac")
|
||
else
|
||
print("Unsupported platform")
|
||
end
|
||
|
||
-- 设置目标目录
|
||
set_targetdir("$(builddir)")
|
||
|
||
-- 添加编译选项
|
||
add_cxxflags("-O3")
|
||
|
||
-- 自定义任务:create-startup
|
||
task("create-startup")
|
||
set_category("action")
|
||
on_run(function ()
|
||
os.exec("$(projectdir)/tools/create-startup.sh $(projectdir) $(builddir)")
|
||
end)
|
||
set_menu {
|
||
usage = "xmake create-startup",
|
||
description = "Create startup script",
|
||
options = {}
|
||
}
|
||
|
||
-- 自定义任务:train-cnn
|
||
task("train-cnn")
|
||
set_category("action")
|
||
on_run(function ()
|
||
if os.host() == "linux" then
|
||
os.exec("gnome-terminal -- bash -c \"$(projectdir)/tools/TrainCNN/backward.py\"")
|
||
else
|
||
print("train-cnn only supported on Linux with gnome-terminal")
|
||
end
|
||
end)
|
||
set_menu {
|
||
usage = "xmake train-cnn",
|
||
description = "Train CNN model",
|
||
options = {}
|
||
} |