{"id":13772728,"url":"https://github.com/stevedonovan/Lake","last_synced_at":"2025-05-11T05:33:25.923Z","repository":{"id":1110640,"uuid":"979128","full_name":"stevedonovan/Lake","owner":"stevedonovan","description":"A Lua-based Build Tool","archived":false,"fork":false,"pushed_at":"2015-09-24T18:52:23.000Z","size":1000,"stargazers_count":133,"open_issues_count":23,"forks_count":17,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-14T19:42:19.693Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stevedonovan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-10-11T17:34:09.000Z","updated_at":"2025-03-28T04:00:28.000Z","dependencies_parsed_at":"2022-08-16T12:05:06.080Z","dependency_job_id":null,"html_url":"https://github.com/stevedonovan/Lake","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevedonovan%2FLake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevedonovan%2FLake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevedonovan%2FLake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevedonovan%2FLake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stevedonovan","download_url":"https://codeload.github.com/stevedonovan/Lake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253523690,"owners_count":21921815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T17:01:07.265Z","updated_at":"2025-05-11T05:33:25.618Z","avatar_url":"https://github.com/stevedonovan.png","language":"Lua","readme":"## Lake - a Lua-based Build Tool\n\n`lake` is a build engine written in Lua, similar to Ruby's [rake](http://rake.rubyforge.org/).\nIt is not a makefile generator, but evaluates dependencies directly - that is, it is an\ninterpreter of dependency rules, not a makefile compiler.  This is a sensible design decision\nbecause `lake` is small (about 70K pure Lua, 250K together with Lua and LuaFileSystem) enough\nto carry around.\n\nMuch of the inspiration for `lake` comes from Martin Fowler's article on [dependency-driven\nprogramming](http://martinfowler.com/articles/rake.html) in `rake`.\n\nThere is one file, `lake`, which only depends on LuaFileSystem. On Unix, you can\nsimply make it executable and put it on your path.\n\n\nOr for Windows:\n\n    rem lake.bat\n    lua \\path\\to\\lake %*\n\nApart from being quick \u0026 compact, these are the features of interest:\n\n   - it is an embedded DSL (Domain Specific Language) - all the normal functionality of Lua is\navailable\n   - it knows about both `GCC` and Microsoft Visual C++ compilers, and does cross-platform builds\n   - it knows about building Lua extensions in C or C++\n\nFor example, a lakefile for building a GTK application can be as simple as:\n\n    c.program{'hello',needs='gtk'}\n\nCreating a binary Lua extension:\n\n    c.shared{'mylib',needs='lua'}\n\n`lake` can be used to automate other tools as well. This will convert all JPEG files in the\ncurrent directory to PNG, but only if the PNG file does not exist or the JPEG file has changed.\n\n    to_png = rule('.jpg','.png',\n      'convert $(INPUT) $(TARGET)'\n    )\n\n    default(to_png '*')\n\nHere is a lakefile for building Lua itself:\n\n    LUA='lua'\n    LUAC='luac print'\n    as_dll = WINDOWS\n    if as_dll then\n      defs = 'LUA_BUILD_AS_DLL'\n    end\n    if not WINDOWS then\n      defs = 'LUA_USE_LINUX'\n    end\n\n    -- build the static library\n    lib,ll=c.library{'lua',src='*',exclude={LUA,LUAC},defines=defs}\n\n    -- build the shared library\n    if as_dll then\n      libl = c.shared{'lua',rules=ll,dynamic=true}\n    else\n      libl = lib\n    end\n\n    -- build the executables\n    lua = c.program{'lua',libl,src=LUA,needs='dl math readline',export=not as_dll}\n    luac = c.program{'luac',lib,src=LUAC,needs='math'}\n\n    default {lua,luac}\n\nMore details can be found in `doc/index.md`\n\nReleased under the MIT/X11 licence,\nSteve Donovan, 2010-2013\n\n","funding_links":[],"categories":["Build Tools \u0026 IDE","Lua","资源","Resources"],"sub_categories":["Build Tools and Standalone Makers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevedonovan%2FLake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstevedonovan%2FLake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevedonovan%2FLake/lists"}