| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- -- imports
- import("core.project.config")
- import("core.project.project")
- import("clang.compile_commands", {rootdir = path.join(os.programdir(), "plugins", "project")})
- -- config target
- function _config_target(target)
- local oldenvs = os.addenvs(target:pkgenvs())
- for _, rule in ipairs(target:orderules()) do
- local on_config = rule:script("config")
- if on_config then
- on_config(target)
- end
- end
- local on_config = target:script("config")
- if on_config then
- on_config(target)
- end
- if oldenvs then
- os.setenvs(oldenvs)
- end
- end
- -- config targets
- function _config_targets()
- for _, target in ipairs(project.ordertargets()) do
- if target:is_enabled() then
- _config_target(target)
- end
- end
- end
- -- main entry
- function main(compileCommandsDirectory, compileCommandsBackend)
- -- generate compile_commands.json
- -- @note we can only load configuration because we watched onFileChanged(xmake.conf)
- os.setenv("XMAKE_IN_PROJECT_GENERATOR", "true")
- os.setenv("XMAKE_GENERATOR_COMPDB_LSP", compileCommandsBackend)
- config.load()
- _config_targets()
- compile_commands.make(compileCommandsDirectory or ".vscode")
- os.setenv("XMAKE_IN_PROJECT_GENERATOR", nil)
- end
|