microsoft / microsoft/vscode-cpptools

Add IntelliSense mode and support for emscripten / web assembly

Offen
#9,780 5 Kommentare 13 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Feature Request Feature: Configuration Feature: IntelliSense Mode Language Service
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Environment
  • OS and version: macOS 12.5
  • VS Code: 1.70.2
  • C/C++ extension: 1.11.5
  • GDB / LLDB version: N/A
Bug Summary and Steps to Reproduce

IntelliSense does not work for Emscripten. C++ Tool will query the default compiler target, but would not recognize it:

Querying compiler's default target using command line: "/Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/em++" -dumpmachine
Compiler returned default target value: wasm32-unknown-emscripten
Unhandled default compiler target value detected: wasm32-unknown-emscripten

And then it will go on and query the headers with the wrong target specified (in this case, ARM):

Compiler query command line: /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/em++ -std=gnu++17 --target=aarch64-arm-none-eabi -Wp,-v -fno-blocks -E -dM -x c++ /dev/null

This would cause Emscripten's clang to use the wrong relative sysroot directory for header search, thus breaking IntelliSense.

tommyli@HOST ~ % em++ -std=gnu++17 --target=aarch64-arm-none-eabi -Wp,-v -fno-blocks -E -dM -x c++ /dev/null
clang -cc1 version 16.0.0 based upon LLVM 16.0.0git default target x86_64-apple-darwin21.6.0
ignoring nonexistent directory "/Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/usr/local/include"
ignoring nonexistent directory "/Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/SDL
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/lib/clang/16.0.0/include
End of search list.

Dropping --target would make cm++ finding the sysroot headers correctly:

tommyli@HOST ~ % em++ -std=gnu++17 -Wp,-v -fno-blocks -E -dM -x c++ /dev/null                               
clang -cc1 version 16.0.0 based upon LLVM 16.0.0git default target x86_64-apple-darwin21.6.0
ignoring nonexistent directory "/Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten/c++/v1"
ignoring nonexistent directory "/Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/SDL
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include/c++/v1
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/lib/clang/16.0.0/include
 /Users/tommyli/Documents/emscripten-core/emsdk/upstream/emscripten/cache/sysroot/include
Debugger Configurations
N/A
Debugger Logs
N/A
Other Extensions

No response

Additional Information

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, die Compiler-Zielabfrage mit em++ zu reproduzieren, und vergleiche die Header-Suchergebnisse mit und ohne --target, wie im Issue gezeigt. Verfolge, wie das angegebene wasm32-unknown-emscripten-Ziel verarbeitet wird, und überprüfe, dass IntelliSense es erkennt und die korrekten Emscripten-sysroot-Header abfragt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp, wasm
Bereich
compilers, devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.