microsoft / microsoft/vscode-cpptools

Add support for clang-cl behavior for `/external:I`

Open
#14,186 3 comments 0 reactions 1 assignee View on GitHub

@Colengms is already working on this.

Since Feb 12, 2026.

bug compiler support fixed Language Service
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Environment

  • OS and Version: Windows 10
  • VS Code Version: 1.109.2
  • C/C++ Extension Version: 1.30.5

Bug Summary

/external:I in compilerArgs for MSVC are not treated as system include directories as shown in C/C++ Diagnostic:

    Include paths:
        include: C:\tmp\.vscode

But for clang++ -isystem, it is correctly detected as system include:

    Include paths:
        system include (isystem): C:\tmp\.vscode

clang-cl -imsvc as well:

    Include paths:
        system include: C:\Program Files\LLVM\lib\clang\21\include
        system include: C:\tmp\.vscode

Configuration and Logs

C/C++ Diagnostic for MSVC /external:I
-------- Diagnostics - 2026/2/13 00:47:56
Version: 1.30.5
Current Configuration:
{
    "name": "Test",
    "intelliSenseMode": "windows-msvc-x64",
    "compilerArgs": [
        "/external:I${workspaceFolder}/.vscode"
    ],
    "compilerPathIsExplicit": false,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "intelliSenseModeIsExplicit": true,
    "recursiveIncludesReduceIsExplicit": false,
    "recursiveIncludesPriorityIsExplicit": false,
    "recursiveIncludesOrderIsExplicit": false,
    "windowsSdkVersion": "10.0.26100.0",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "mergeConfigurations": false,
    "recursiveIncludes": {},
    "compilerPath": "C:\\Program Files\\Microsoft Visual Studio\\18\\Enterprise\\VC\\Tools\\MSVC\\14.50.35717\\bin\\Hostx64\\x64\\cl.exe",
    "browse": {
        "limitSymbolsToIncludedHeaders": true
    }
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {},
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true,
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.30.5.0
Current database path: C:\USERS\HUANGQINJIN\APPDATA\LOCAL\MICROSOFT\VSCODE-CPPTOOLS\90D20250051651E1D809C1C7E0C52070\.BROWSE.VC.DB
Translation Unit Mappings:
[ C:\tmp\main.cpp - source TU]:
Translation Unit Configurations:
[ C:\tmp\main.cpp ]
    Process ID: 2948
    Memory Usage: 50 MB
    Compiler Path: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\bin\Hostx64\x64\cl.exe
    Include paths:
        include: C:\tmp\.vscode
        system include: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\include
        system include: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\atlmfc\include
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt
    Standard Version: ms_c++17
    IntelliSense Mode: windows-msvc-x64
Total Memory Usage: 50 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 5348
C/C++ Diagnostic for clang++ -isystem
-------- Diagnostics - 2026/2/13 00:52:26
Version: 1.30.5
Current Configuration:
{
    "name": "Test",
    "compilerPath": "C:\\Program Files\\LLVM\\bin\\clang++.exe",
    "compilerArgs": [
        "-isystem${workspaceFolder}/.vscode"
    ],
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "intelliSenseModeIsExplicit": false,
    "recursiveIncludesReduceIsExplicit": false,
    "recursiveIncludesPriorityIsExplicit": false,
    "recursiveIncludesOrderIsExplicit": false,
    "compilerPathInCppPropertiesJson": "C:\\Program Files\\LLVM\\bin\\clang++.exe",
    "mergeConfigurations": false,
    "recursiveIncludes": {},
    "browse": {
        "limitSymbolsToIncludedHeaders": true
    }
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {},
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true,
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.30.5.0
Current database path: C:\USERS\HUANGQINJIN\APPDATA\LOCAL\MICROSOFT\VSCODE-CPPTOOLS\90D20250051651E1D809C1C7E0C52070\.BROWSE.VC.DB
Translation Unit Mappings:
[ C:\tmp\main.cpp - source TU]:
Translation Unit Configurations:
[ C:\tmp\main.cpp ]
    Process ID: 15408
    Memory Usage: 51 MB
    Compiler Path: C:\Program Files\LLVM\bin\clang++.exe
    Include paths:
        system include (isystem): C:\tmp\.vscode
        system include: C:\Program Files\LLVM\lib\clang\21\include
        system include: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\include
        system include: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\atlmfc\include
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt
    Standard Version: c++14
    IntelliSense Mode: windows-clang-x64
    Other Flags:
        --clang
        --clang_version=210108
        --ms_compatibility
Total Memory Usage: 51 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 6459
Number of files parsed: 1
C/C++ Diagnostic for clang-cl -imsvc
-------- Diagnostics - 2026/2/13 00:53:17
Version: 1.30.5
Current Configuration:
{
    "name": "Test",
    "compilerPath": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
    "compilerArgs": [
        "-imsvc${workspaceFolder}/.vscode"
    ],
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "intelliSenseModeIsExplicit": false,
    "recursiveIncludesReduceIsExplicit": false,
    "recursiveIncludesPriorityIsExplicit": false,
    "recursiveIncludesOrderIsExplicit": false,
    "compilerPathInCppPropertiesJson": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe",
    "mergeConfigurations": false,
    "recursiveIncludes": {},
    "browse": {
        "limitSymbolsToIncludedHeaders": true
    }
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {},
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true,
        "**/.classpath": true,
        "**/.project": true,
        "**/.settings": true,
        "**/.factorypath": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.30.5.0
Current database path: C:\USERS\HUANGQINJIN\APPDATA\LOCAL\MICROSOFT\VSCODE-CPPTOOLS\90D20250051651E1D809C1C7E0C52070\.BROWSE.VC.DB
Translation Unit Mappings:
[ C:\tmp\main.cpp - source TU]:
Translation Unit Configurations:
[ C:\tmp\main.cpp ]
    Process ID: 24416
    Memory Usage: 51 MB
    Compiler Path: C:\Program Files\LLVM\bin\clang-cl.exe
    Include paths:
        system include: C:\Program Files\LLVM\lib\clang\21\include
        system include: C:\tmp\.vscode
        system include: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\include
        system include: C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Tools\MSVC\14.50.35717\atlmfc\include
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt
        system include: C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt
    Standard Version: c++14
    IntelliSense Mode: windows-clang-x64
    Other Flags:
        --clang
        --clang_version=210108
        --ms_compatibility
Total Memory Usage: 51 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 6459
Number of files parsed: 1

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.