visual_studio_code.rst 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. .. _doc_configuring_an_ide_vscode:
  2. Visual Studio Code
  3. ==================
  4. `Visual Studio Code <https://code.visualstudio.com>`_ is a free cross-platform code editor
  5. by `Microsoft <https://microsoft.com>`_ (not to be confused with :ref:`doc_configuring_an_ide_vs`).
  6. Importing the project
  7. ---------------------
  8. - Make sure the C/C++ extension is installed. You can find instructions in
  9. the `official documentation <https://code.visualstudio.com/docs/languages/cpp>`_.
  10. Alternatively, `clangd <https://open-vsx.org/extension/llvm-vs-code-extensions/vscode-clangd>`_
  11. can be used instead.
  12. - When using the clangd extension, run ``scons compiledb=yes``.
  13. - From the Visual Studio Code's main screen open the Godot root folder with
  14. **File > Open Folder...**.
  15. - Press :kbd:`Ctrl + Shift + P` to open the command prompt window and enter *Configure Task*.
  16. .. figure:: img/vscode_configure_task.png
  17. :align: center
  18. - Select the **Create tasks.json file from template** option.
  19. .. figure:: img/vscode_create_tasksjson.png
  20. :align: center
  21. - Then select **Others**.
  22. .. figure:: img/vscode_create_tasksjson_others.png
  23. :align: center
  24. - If there is no such option as **Create tasks.json file from template** available, either delete the file if it already exists in your folder or create a ``.vscode/tasks.json`` file manually. See `Tasks in Visual Studio Code <https://code.visualstudio.com/docs/editor/tasks#_custom-tasks>`_ for more details on tasks.
  25. - Within the ``tasks.json`` file find the ``"tasks"`` array and add a new section to it:
  26. .. tabs::
  27. .. code-tab:: js LinuxBSD
  28. {
  29. "label": "build",
  30. "group": "build",
  31. "type": "shell",
  32. "command": "scons",
  33. "args": [
  34. "-j",
  35. "$(nproc)"
  36. ],
  37. "problemMatcher": "$msCompile"
  38. }
  39. .. code-tab:: js Windows
  40. {
  41. "label": "build",
  42. "group": "build",
  43. "type": "shell",
  44. "command": "scons",
  45. "args": [
  46. // Use this when your default shell is Command Prompt (cmd.exe).
  47. "-j %NUMBER_OF_PROCESSORS%",
  48. // Use this when your default shell is PowerShell.
  49. "-j $env:NUMBER_OF_PROCESSORS"
  50. ],
  51. "problemMatcher": "$msCompile"
  52. }
  53. .. figure:: img/vscode_3_tasks.json.png
  54. :figclass: figure-w480
  55. :align: center
  56. An example of a filled out ``tasks.json``.
  57. Arguments can be different based on your own setup and needs. See
  58. :ref:`doc_introduction_to_the_buildsystem` for a full list of arguments.
  59. Debugging the project
  60. ---------------------
  61. To run and debug the project you need to create a new configuration in the ``launch.json`` file.
  62. - Press :kbd:`Ctrl + Shift + D` to open the Run panel.
  63. - If ``launch.json`` file is missing you will be prompted to create a new one.
  64. .. figure:: img/vscode_1_create_launch.json.png
  65. :align: center
  66. - Select **C++ (GDB/LLDB)**. There may be another platform specific option here. If selected,
  67. adjust the configuration example provided accordingly.
  68. - Within the ``launch.json`` file find the ``"configurations"`` array and add a new section to it:
  69. .. tabs::
  70. .. code-tab:: js LinuxBSD
  71. {
  72. "name": "Launch Project",
  73. "type": "lldb",
  74. "request": "launch",
  75. // Change to godot.linuxbsd.tools.64.llvm for llvm-based builds.
  76. "program": "${workspaceFolder}/bin/godot.linuxbsd.tools.64",
  77. // Change the arguments below for the project you want to test with.
  78. // To run the project instead of editing it, remove the "--editor" argument.
  79. "args": [ "--editor", "--path", "path-to-your-godot-project-folder" ],
  80. "stopAtEntry": false,
  81. "cwd": "${workspaceFolder}",
  82. "environment": [],
  83. "externalConsole": false,
  84. "preLaunchTask": "build"
  85. }
  86. .. code-tab:: js LinuxBSD_gdb
  87. {
  88. "name": "Launch Project",
  89. "type": "cppdbg",
  90. "request": "launch",
  91. // Change to godot.linuxbsd.tools.64.llvm for llvm-based builds.
  92. "program": "${workspaceFolder}/bin/godot.linuxbsd.tools.64",
  93. // Change the arguments below for the project you want to test with.
  94. // To run the project instead of editing it, remove the "--editor" argument.
  95. "args": [ "--editor", "--path", "path-to-your-godot-project-folder" ],
  96. "stopAtEntry": false,
  97. "cwd": "${workspaceFolder}",
  98. "environment": [],
  99. "externalConsole": false,
  100. "setupCommands":
  101. [
  102. {
  103. "description": "Enable pretty-printing for gdb",
  104. "text": "-enable-pretty-printing",
  105. "ignoreFailures": true
  106. }
  107. ],
  108. "preLaunchTask": "build"
  109. }
  110. .. code-tab:: js Windows
  111. {
  112. "name": "Launch Project",
  113. "type": "cppvsdbg",
  114. "request": "launch",
  115. "program": "${workspaceFolder}/bin/godot.windows.tools.64.exe",
  116. // Change the arguments below for the project you want to test with.
  117. // To run the project instead of editing it, remove the "--editor" argument.
  118. "args": [ "--editor", "--path", "path-to-your-godot-project-folder" ],
  119. "stopAtEntry": false,
  120. "cwd": "${workspaceFolder}",
  121. "environment": [],
  122. "console": "internalConsole",
  123. "visualizerFile": "${workspaceFolder}/platform/windows/godot.natvis",
  124. "preLaunchTask": "build"
  125. }
  126. .. figure:: img/vscode_2_launch.json.png
  127. :figclass: figure-w480
  128. :align: center
  129. An example of a filled out ``launch.json``.
  130. .. note::
  131. Due to sporadic performance issues, it is recommended to use LLDB over GDB on Unix-based systems.
  132. Make sure that the `CodeLLDB extension <https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb>`_
  133. is installed.
  134. If you encounter issues with lldb, you may consider using gdb (see the LinuxBSD_gdb configuration).
  135. Do note that lldb may work better with LLVM-based builds. See :ref:`doc_compiling_for_linuxbsd` for further information.
  136. The name under ``program`` depends on your build configuration,
  137. e.g. ``godot.linuxbsd.tools.64`` for 64-bit LinuxBSD platform with ``tools`` enabled.
  138. If you run into any issues, ask for help in one of
  139. `Godot's community channels <https://godotengine.org/community>`__.
  140. .. tip::
  141. To get linting on class reference XML files, install the
  142. `vscode-xml extension <https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml>`__.