zengine/engine/xmake/modules/find_sdk.lua

38 lines
1.3 KiB
Lua
Raw Normal View History

2024-07-27 14:24:46 +08:00
function find_exe_dir()
local os_name = os.host()
local arch_name = os.arch()
local mode_name = is_mode("debug") and "debug" or "release"
-- 构建生成目录路径
return path.join(os.projectdir(), "build", os_name, arch_name, mode_name)
end
2024-07-20 18:04:19 +08:00
function find_my_program(name, sdkdir, use_next)
import("lib.detect.find_file")
import("lib.detect.find_program")
import("lib.detect.find_tool")
local sdkdir = sdkdir or path.join(os.projectdir(), "tools")
2024-07-27 14:24:46 +08:00
local exedir = find_exe_dir()
local tool = find_tool(name, {pathes = {sdkdir, exedir, "/usr/local/bin"}})
local prog = tool and tool.program or find_program(name, {pathes = {sdkdir,exedir, "/usr/local/bin"}})
prog = prog or find_file(name, {sdkdir, exedir})
2024-07-20 18:04:19 +08:00
if (prog == nil) then
if os.host() ~= "windows" then
local outdata, errdata = os.iorun("which " .. name)
if (errdata ~= nil or errdata ~= "") then
prog = string.gsub(outdata, "%s+", "")
end
else
prog = find_file(name .. ".exe", {sdkdir})
end
end
if (prog == nil) then
if not use_next then
return find_my_program(name, path.join(sdkdir, name), true)
end
2024-07-27 14:24:46 +08:00
print(name .. " not found! under " .. sdkdir, exedir)
2024-07-20 18:04:19 +08:00
return
end
return {program = prog, sdkdir = sdkdir}
end