--!A cross-platform build utility based on Lua -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- -- Copyright (C) 2015-present, Xmake Open Source Community. -- -- @author ruki -- @file xmake.lua -- task("project") set_category("plugin") on_run("main") set_menu { usage = "xmake project [options] [outputdir]", description = "Generate the project file.", options = { {'k', "kind", "kv", "makefile", "Set the project kind.", " - make", " - xmakefile (makefile with xmake)", " - cmake", " - ninja", " - xcode", " - compile_flags", " - compile_commands (clang compilation database with json format)", " - vs (auto detect), vs2002 - vs2026", " - vsxmake (auto detect), vsxmake2010 ~ vsxmake2026", values = function (complete, opt) if not complete then return end local values = table.keys(import("main.makers")()) table.sort(values, function (a, b) return a > b end) return values end}, {'m', "modes", "kv", nil, "Set the project modes.", " e.g. ", " - xmake project -k vsxmake -m \"release,debug\""}, {'a', "archs", "kv", nil, "Set the project archs.", " e.g. ", " - xmake project -k vsxmake -a \"x86,x64\""}, {'t', "target", "kv", nil, "Set the project target.", " e.g. ", " - xmake project -k compile_commands -t \"custom\""}, {nil, "lsp", "kv", nil, "Set the LSP backend for compile_commands.", " e.g. ", " - xmake project -k compile_commands --lsp=clangd", values = {"clangd", "cpptools", "ccls"}}, {nil, "outputdir", "v", ".", "Set the output directory."} } }