{ // clangd is the language server; the cpptools engine would parse every file // a second time and disagree, since nothing tells it about a cross // compiler. "C_Cpp.intelliSenseEngine": "disabled", // --query-driver lets clangd ask the cross compiler for its own system // includes and target. The database is named here rather than in .clangd // because that file travels with the driver into a consumer's submodule, // where a build tree of this repo's own need not exist. It sits one level // above the trees, and CMake Tools copies the selected preset's into it on // every configure: the database carries `-mmcu`, so a fixed tree would // check the driver against one chip. "clangd.arguments": [ "--compile-commands-dir=${workspaceFolder}/build", "--query-driver=**avr-g++*", "--header-insertion=never" ], "cmake.copyCompileCommands": "${workspaceFolder}/build/compile_commands.json", // The presets are the build interface, and the toolchain file inside the // libavr submodule is the one place the compiler is chosen. No prefix is // named here: the gitignored local/machine.cmake at this repository's root // is where a checkout says where its toolchain is (libavr guidance rule 50). "cmake.useCMakePresets": "always", "cmake.configureOnOpen": true, "cmake.options.statusBarVisibility": "compact", "files.watcherExclude": { "**/build/**": true, "**/local/**": true, "**/libavr/**": true }, "files.associations": { ".clangd": "yaml", ".clang-format": "yaml" } }