This directory contains enhanced VSCode configuration for ThemisDB development.
Advanced IntelliSense configuration for multiple platforms:
- Linux (GCC) - Default Linux development
- Linux (Clang) - Alternative with Clang
- Windows (MSVC) - Visual Studio 2022
- WSL (Ubuntu) - Windows Subsystem for Linux
- ARM64 (Cross-compile) - Raspberry Pi / ARM servers
Features:
- Auto-detection of vcpkg include paths
- Platform-specific compiler settings
- Integration with CMake Tools via
configurationProvider - Support for
compile_commands.json
Build type variants for CMake Tools extension:
- Debug - Development with symbols, no optimizations
- Release - Full optimizations
- RelWithDebInfo - Release with debug symbols
- MinSizeRel - Minimal binary size
- Debug-LLM - Debug with LLM features enabled
- Release-Full - All features (LLM + GPU + RPC)
Compiler kit definitions:
- GCC - GNU Compiler Collection
- Clang - LLVM Clang
- MSVC 2022 - Microsoft Visual C++
- WSL GCC - GCC in Windows Subsystem for Linux
- ARM64 Cross - Cross-compilation for ARM64
# Copy example configuration (if needed)
cp -r .vscode.example .vscode
# Or use the enhanced configuration already in .vscode/IntelliSense:
- Status bar (bottom right) → Click on the configuration name
- Or: Command Palette → "C/C++: Select a Configuration"
CMake Kit:
- Status bar → Click on "No Kit Selected"
- Or: Command Palette → "CMake: Select a Kit"
- Choose based on your platform (GCC, Clang, MSVC, etc.)
Build Variant:
- Status bar → Click on build type
- Or: Command Palette → "CMake: Select Variant"
- Choose based on what you're working on
# Configure (first time or after CMakeLists.txt changes)
F7 or Ctrl+Shift+P → "CMake: Configure"
# Build
F7 or Ctrl+Shift+P → "CMake: Build"
# Run tests
Ctrl+Shift+P → "CMake: Run Tests"
# Debug
F5 (with launch configuration selected)Platform: Linux
- Kit: GCC
- Variant: Debug
- Config: Linux (GCC)
Platform: Windows
- Kit: MSVC 2022
- Variant: Debug
- Config: Windows (MSVC)
Platform: WSL
- Kit: WSL GCC
- Variant: Debug
- Config: WSL (Ubuntu)
- Kit: GCC or MSVC (your platform)
- Variant: Debug-LLM
- Config: Your platform
- Kit: GCC or MSVC (your platform)
- Variant: Release or Release-Full
- Config: Your platform
- Kit: ARM64 Cross
- Variant: Release
- Config: ARM64 (Cross-compile)
Solution 1: Regenerate compile_commands.json
cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ONSolution 2: Select correct configuration
- Status bar → Select your platform configuration
- Should match your active build directory
Solution 3: Restart IntelliSense
- Command Palette → "C/C++: Reset IntelliSense Database"
- Restart VSCode
Check:
vcpkg_installed/directory exists- Correct triplet in
c_cpp_properties.json - CMake has configured successfully
compile_commands.jsonexists in build directory
Solution:
- Command Palette → "CMake: Scan for Kits"
- Check compiler is installed:
gcc --versionorcl.exe - Verify paths in
cmake-kits.json
Edit cmake-variants.json:
{
"MyVariant": {
"short": "MyVar",
"long": "My custom build configuration",
"buildType": "Debug",
"settings": {
"CMAKE_BUILD_TYPE": "Debug",
"MY_CUSTOM_FLAG": "ON"
}
}
}Edit cmake-kits.json:
{
"name": "My Compiler",
"compilers": {
"C": "/path/to/my/gcc",
"CXX": "/path/to/my/g++"
},
"preferredGenerator": {
"name": "Ninja"
}
}Edit c_cpp_properties.json:
{
"configurations": [{
"name": "My Config",
"includePath": [
"${workspaceFolder}/**",
"/path/to/custom/includes"
],
"defines": ["MY_DEFINE"],
"compilerPath": "/path/to/compiler"
}]
}The configurations in this directory work alongside CMake presets defined in cmake/CMakePresets.json.
Relationship:
- CMake Presets - Define build configurations (configure + build args)
- CMake Kits - Define compiler toolchains
- CMake Variants - VSCode-specific build type selection
- c_cpp_properties.json - IntelliSense configuration (language server)
Recommended workflow:
- Select Kit (compiler) →
cmake-kits.json - Select Variant (build type) →
cmake-variants.json - CMake Tools combines these with presets
- IntelliSense uses
c_cpp_properties.json+compile_commands.json
Note: This enhanced configuration is optional. The basic setup in .vscode.example/ works fine for most users. Use this enhanced config if you:
- Develop on multiple platforms
- Need advanced IntelliSense configuration
- Want fine-grained build variant control
- Do cross-compilation (ARM64)