38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
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
 | 
						|
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")
 | 
						|
    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})
 | 
						|
    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
 | 
						|
        print(name .. " not found! under " .. sdkdir, exedir)
 | 
						|
        return
 | 
						|
    end
 | 
						|
    return {program = prog, sdkdir = sdkdir}
 | 
						|
end
 |