microsoft / microsoft/vscode-cpptools

Add IntelliSense mode and support for emscripten / web assembly

Ouverte
#9,780 5 commentaires 13 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Feature Request Feature: Configuration Feature: IntelliSense Mode Language Service
Langage dominant
TypeScript
Étoiles
6.2k
Forks
1.7k
Merge moyen
14 h 46 min
PR mergées (30 j)
61

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire la requête de cible du compilateur avec em++ et comparez les résultats de recherche des headers avec et sans --target, comme indiqué dans l’issue. Suivez la manière dont la cible wasm32-unknown-emscripten signalée est traitée et vérifiez qu’IntelliSense la reconnaît et interroge les bons headers du sysroot Emscripten.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp, wasm
Domaine
compilers, devtools
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.