Visual Studio Code

Nota

This documentation is for contributions to the game engine, and not using Visual Studio Code as a C# or GDScript editor. To code C# or GDScript in an external editor, see the C# guide to configure an external editor.

Visual Studio Code è un editor di codice multipiattaforma gratuito di Microsoft (da non confondere con Visual Studio).

Importare il progetto

  • Assicurarsi che l'estensione C/C++ sia installata. Si possono trovare le istruzioni nella documentazione ufficiale. Alternativamente, si può utilizzare clangd.

  • Quando si utilizza l'estensione clangd, eseguire scons compiledb=yes.

  • Dalla schermata principale di Visual Studio Code, aprire la cartella radice di Godot con File > Open Folder....

  • Premere Ctrl + Maiusc + P per aprire la finestra del prompt dei comandi e immettere Configure Task.

../../../_images/vscode_configure_task.png
  • Selezionare l'opzione Create tasks.json file from template.

../../../_images/vscode_create_tasksjson.png
  • Quindi seleziona Altri.

../../../_images/vscode_create_tasksjson_others.png
  • Se l'opzione Create tasks.json file from template non è disponibile, eliminare il file se esiste già nella cartella oppure creare manualmente un file .vscode/tasks.json. Consultare Task in Visual Studio Code per maggiori dettagli sui task.

  • Dentro il file tasks.json cercare l'array "tasks" e aggiungergli una nuova sezione:

    .vscode/tasks.json
    {
      "label": "build",
      "group": "build",
      "type": "shell",
      "command": "scons",
      "args": [
        // enable for debugging with breakpoints
        "dev_build=yes",
      ],
      "problemMatcher": "$msCompile"
    }
    
../../../_images/vscode_3_tasks.json.png

An example of a filled out tasks.json.

Gli argomenti possono essere diversi in base alla propria configurazione ed esigenze. Consultare Introduction to the buildsystem per un elenco completo di argomenti.

Debugging the project

Per eseguire ed effettuare il debug del progetto è necessario creare una nuova configurazione nel file launch.json.

  • Premere Ctrl + Maiusc + D per aprire il pannello di secuzione (Run).

  • Se il file launch.json manca, verrà chiesto di crearne uno nuovo.

../../../_images/vscode_1_create_launch.json.png
  • Selezionare C++ (GDB/LLDB). Potrebbe esserci un'altra opzione specifica per la piattaforma. Se selezionata, adattare pertanto l'esempio di configurazione fornito.

  • Dentro il file launch.json cercare l'array "configurations" e aggiungergli una nuova sezione:

{
  "name": "Launch Project",
  "type": "lldb",
  "request": "launch",
  // Change to godot.linuxbsd.editor.dev.x86_64.llvm for llvm-based builds.
  "program": "${workspaceFolder}/bin/godot.linuxbsd.editor.dev.x86_64",
  // Change the arguments below for the project you want to test with.
  // To run the project instead of editing it, remove the "--editor" argument.
  "args": [ "--editor", "--path", "path-to-your-godot-project-folder" ],
  "stopAtEntry": false,
  "cwd": "${workspaceFolder}",
  "environment": [],
  "externalConsole": false,
  "preLaunchTask": "build"
}
../../../_images/vscode_2_launch.json.png

An example of a filled out launch.json.

Nota

A causa di sporadici problemi di prestazioni, si raccomanda di utilizzare LLDB invece di GDB su sistemi basati su Unix. Assicurarsi che sia installata l'estensione di CodeLLDB.

Se si incontrano problemi con lldb, si può considerare l'uso di gdb (vedere la configurazione di LinuxBSD_gdb).

Si noti che lldb potrebbe funzionare meglio con le compilazioni basate su LLVM. Vedere Compilare per Linux, *BSD per ulteriori informazioni.

Il nome in program dipende dalla configurazione di compilazione, ad esempio godot.linuxbsd.editor.dev.x86_64 per la piattaforma LinuxBSD a 64 bit con target=editor e dev_build=yes.

Configurazione dell'Intellisense

Per l'estensione C/C++:

Per correggere eventuali errori di inclusione, è necessario configurare alcune impostazioni nel file c_cpp_properties.json.

  • Prima di tutto, assicurarsi di compilare il progetto poiché alcuni file devono essere generati.

  • Modificare il file di configurazione C/C++ tramite l'interfaccia utente o tramite testo:

../../../_images/vscode_edit_configurations.webp
  • Aggiungere un percorso di inclusione per la propria piattaforma, ad esempio ${workspaceFolder}/platform/windows.

  • Aggiungere definizioni TOOLS_ENABLED per l'editor, DEBUG_ENABLED per le build di debug e TESTS_ENABLED per i test.

  • Assicurarsi che il percorso del compilatore sia configurato correttamente per il compilatore in uso. Consultare Introduction to the buildsystem per ulteriori informazioni sulla propria piattaforma.

  • Il file c_cpp_properties.json dovrebbe apparire simile a questo per Windows:

    .vscode/c_cpp_properties.json
    {
      "configurations": [
        {
          "name": "Win32",
          "includePath": [
            "${workspaceFolder}/**",
            "${workspaceFolder}/platform/windows"
          ],
          "defines": [
            "_DEBUG",
            "UNICODE",
            "_UNICODE",
            "TOOLS_ENABLED",
            "DEBUG_ENABLED",
            "TESTS_ENABLED"
          ],
          "windowsSdkVersion": "10.0.22621.0",
          "compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/cl.exe",
          "cStandard": "c17",
          "cppStandard": "c++17",
          "intelliSenseMode": "windows-msvc-x64"
        }
      ],
      "version": 4
    }
    
  • Alternativamente, è possibile utilizzare l'argomento scons compiledb=yes e impostare i comandi di compilazione compileCommands su compile_commands.json, che si trova nella sezione avanzata dell'interfaccia utente di configurazione C/C++.

    • Questo argomento si può aggiungere al task di compilazione in tasks.json poiché sarà necessario eseguirlo ogni volta che vengono aggiunti o spostati file.

Se ci si imbatte in qualsiasi problema, chiedi aiuto in uno dei Canali della comunità di Godot.

Suggerimento

Per ottenere il linting sui file XML di riferimento alle classi, installare l'estensione vscode-xml.