Skip to content

Add support for armcc compiler #6677

Open

Description

@gentooise

Type: LanguageService

I'm using CMake Tools extension as configurationProvider for cpptools, CMake files are correctly parsed and ARM Compiler toolchain is selected (via my Toolchain.cmake file).

However, it seems cpptools extension does not support ARM Compiler.

This is ARM Compiler -> link (it's proprietary ARM compiler, a license is needed to use the compiler, but I could provide whatever compiler output you may need).

Describe the bug

  • OS and Version: Windows 10
  • VS Code Version: 1.52.0
  • C/C++ Extension Version: v1.1.3
  • Other extensions you installed (and if the issue persists after disabling them): CMake Tools

After configuration has been provided via CMake Tools, cpptools gives the following C/C++ Configuration Warning:

[17/12/2020, 09:34:04] Unable to resolve configuration with compilerPath "c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe".  Using "cl.exe" instead.

The path to ARM Compiler is correct, the executable is there.

Steps to reproduce

You cannot reproduce without an active ARM Compiler license.

Expected behavior

C/C++ extension also supports ARM proprietary compilers.

Logs
Insert logs here.

Screenshots

Additional context

Here you can find more details about compiler defines/includes. (I already supported a similar work for an Eclipse IDE plugin some time ago).

Quotes from above link:

For built-in macros and includes, I provide here armcc case as an example:

Built-in macros are provided by the compiler with armcc --list_macros dummy.c (dummy.c can be empty). I could just feed your Parser with this command, whose output is like the following:

#define __STDC__ 1
#define __STDC_VERSION__ 199409L
#define __EDG__ 1
#define __EDG_VERSION__ 407
#define __EDG_SIZE_TYPE__ unsigned int
#define __EDG_PTRDIFF_TYPE__ int
#define __sizeof_int 4
#define __sizeof_long 4
#define __sizeof_ptr 4
#define __ARMCC_VERSION 5060422
#define __TARGET_CPU_ARM7TDMI 1
#define __TARGET_FPU_SOFTVFP 1
#define __CC_ARM 1
#define __arm 1
#define __arm__ 1
#define __TARGET_ARCH_4T 1
#define __TARGET_ARCH_ARM 4
#define __TARGET_ARCH_THUMB 1
#define __TARGET_ARCH_A64 0
#define __TARGET_ARCH_AARCH32 1
#define __TARGET_FEATURE_HALFWORD 1
#define __TARGET_FEATURE_THUMB 1
#define __TARGET_FEATURE_MULTIPLY 1
#define __TARGET_FEATURE_EXTENSION_REGISTER_COUNT 0
#define __a32__ 1
#define __OPTIMISE_SPACE 1
#define __OPT_SMALL_ASSERT 1
#define __OPTIMISE_LEVEL 2
#define __SOFTFP__ 1

There is no armcc command line argument to get the list of include directories. The only include directory is fixed, and it is simply ../include (relative to the location of armcc executable). I could feed your Built-in parser with this path.

Luckily, I see that everything seems well documented. You can find all info starting from the link to the docs I provided above. Moreover, I can suggest other specific links of interests (you can easily find them navigating through docs by yourself):

  • Link to Compiler command-line options and search paths (you can also see ../include there);
  • Link to Factors influencing how the compiler searches for header files;
  • Link to Compiler search rules and the current place;
  • Link to The ARMCC5INC environment variable.

Additionally, I want to point out that I'm using version 5 of the ARM compiler, but there is version 6 also. With version 6, ARM seems to switch to clang-compatible compiler. I provide also a link to version 6 command line options here.

Here in section 1.1 Support level definitions they say:

Arm Compiler 6 is built on LLVM technology and preserves the functionality of that technology where possible. This means that there are additional features available in Arm Compiler that are not listed in the documentation. These additional features are known as community features. For information on these community features, see the documentation for the Clang/LLVM project.

Activity

  1. sean-mcmanus commented on Dec 17, 2020

    @sean-mcmanus
    Contributor

    Thanks for the info on armcc. This sounds like a duplicate of #4269 .

  2. gentooise commented on Dec 17, 2020

    @gentooise
    Author

    I'm sorry, I forgot I had already opened a similar issue.

    Anyway, I think we may close that one and leave this opened, because I updated my settings in order to use just the configurationProvider (CMake Tools) in favor of the old compileCommands mechanism.

    Please let me know if I did well.

    Thanks

  3. gentooise commented on Dec 22, 2020

    @gentooise
    Author

    Any news about this? Do you have any workaround? It doesn't seem possible to manually override compilerPath when using CMake Tools... any idea? Sean McManus (@sean-mcmanus) Bob Brown (@bobbrow)

    Thanks

  4. sean-mcmanus commented on Dec 22, 2020

    @sean-mcmanus
    Contributor

    Yeah, there isn't a way to override the compilerPath with CMake Tools. Looks like this issue is being tracked in CMake Tools at microsoft/vscode-cmake-tools#1096 and the recommended workaround is to use compileCommands, which allows the compilerPath to be overwritten.

  5. gentooise commented on Dec 22, 2020

    @gentooise
    Author

    Thank you for the info Sean McManus (@sean-mcmanus)

    And to override just system include paths and defines (ignoring error on compilerPath), instead? Not possible either?

  6. sean-mcmanus commented on Dec 22, 2020

    @sean-mcmanus
    Contributor

    If the configurationProvider is set, then our extension will use the includePath/defines from the configuration provider and there's not currently an override mechanism, other than modifying the open source code to allow such an override.

  7. Colengms commented on Jan 21, 2021

    @Colengms
    Contributor

    Hi gentooise . Could you set "C_Cpp.loggingLevel": "Debug", and check the C/C++ output for the command lines that are being used to query the compiler? We will actually invoke the compiler up to 4 times:

    • To determine the compiler's default C++ standard (based on system defines), so we know which to use if not provided by the config.
    • To determine the compiler's default target (-dumpmachine), so we know what IntelliSense mode to use if not provided by the config.
    • To determine the system includes and defines (which uses compilerArgs provided by the custom configuration's 'browse config'). Files that we are unable to get a file-specific custom configuration for will fall back to this config..
    • To determine the system includes and defines for files we receive a custom configuration for.

    I'm curious which of these fail. If the issue is only that the result of -dumpmachine is not recognized, that would be relatively simple to fix. Or, the issue may be with how to compose one of the other command lines.

  8. gerhardol commented on Feb 3, 2021

    @gerhardol

    I have the same problem using the WindRiver compiler.
    The options to the WindRiver compiler is different from gcc family, CMake overridden.
    Similar with other compilers (ARMCC among others)
    We could configure the required information manually instead of quering the compiler.

    		// Set provider (if compile_commands is not activated)
    		"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
    		// Use the compile commands if it exists, improves intellisense
    		"C_Cpp.default.compileCommands": "D:/g2/path/.vscode/build/compile_commands.json",
    

    First part of output

    cpptools/didChangeCppProperties
    Attempting to get defaults from compiler found on the machine: 'C:\cygwin\bin\gcc.exe'
    Querying compiler for default C++ language standard using command line: "C:\cygwin\bin\gcc.exe" -x c++ -E -dM nul
    Querying compiler for default C language standard using command line: "C:\cygwin\bin\gcc.exe" -x c -E -dM nul
    Querying compiler's default target using command line: "C:\cygwin\bin\gcc.exe" -dumpmachine
    Compiler returned default target value: x86_64-pc-cygwin
    
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
    Attempting to get defaults from compiler found on the machine: 'C:\cygwin\bin\gcc.exe'
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
    Attempting to get defaults from C compiler in compile_commands.json file: 'D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe'
    Querying compiler for default C++ language standard using command line: "D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe" -x c++ -E -dM nul
    Failed to query compiler at path "D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe" for default standard versions.  Compiler querying is disabled for this compiler.
    Querying compiler for default C language standard using command line: "D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe" -x c -E -dM nul
    Failed to query compiler at path "D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe" for default standard versions.  Compiler querying is disabled for this compiler.
    Querying compiler's default target using command line: "D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe" -dumpmachine
    Compiler returned default target value: 
    Unhandled default compiler target value detected: 
    Attempting to get defaults from compiler found on the machine: 'C:\cygwin\bin\gcc.exe'
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
    Attempting to get defaults from C compiler in compile_commands.json file: 'D:/g2/Tools/WindRiver/5.9.4.8/diab/WIN32/bin/dcc.exe'
    
  9. 12 remaining items

  10. Wetmelon commented on Feb 11, 2021

    @Wetmelon

    I have the same problem with tricore-gcc. It was working fine until a few versions ago (yes, even querying standard include paths based on , which I understand is the original intent of this entry), now I get a stupid dialog box with a warning the first time I open a C or C++ file in VSCode. The compiler's a bog standard GCC aimed at the TriCore target, there should be no reason for this. If it works with arm-none-eabi-gcc, it should work with tricore-gcc. At the very least just stop the console from popping up every time, it's driving me nuts. Make it a squiggle-line error in the .json like the inability to resolve the path to the compiler maybe?

            {
                "name": "RC10-10/31",
                "includePath": [
                    "${workspaceRoot}/Src/**",
                    "${workspaceRoot}/Lib/**",
                    "C:/Tools/API/RC10_10_31/V02.11/C-API/Includes",
                    "C:/Tools/API/RC10_10_31/V02.11/C-API/Includes/Core"
                ],
                "compilerPath": "C:/Tools/Compiler/HIGHTEC/TRICORE/3.4.6.1/bin/tricore-g++.exe -O2 -std=gnu++98 -mcpu24 -mcpu=TC13-FPU_ERR13X_OP1 -specs=tricore.specs",
                "cStandard": "c99",
                "cppStandard": "c++98",
                "intelliSenseMode": "gcc-x64"
            },
    
    Unable to resolve configuration with compilerPath "C:\Tools\Compiler\HIGHTEC\TRICORE\3.4.6.1\bin\tricore-g++.exe".  Using "C:\Program Files\LLVM\bin\clang.exe" instead.
    
  11. sean-mcmanus commented on Feb 11, 2021

    @sean-mcmanus
    Contributor

    Paul Guenette (@Wetmelon) Your issue might be fixed by #6898 ? Colen Garoutte-Carson (@Colengms) Do you know if that's the same issue?

  12. Wastus commented on Feb 16, 2021

    @Wastus

    I'm a bit confused right now and not sure which issue is the correct one to post to, I'm just pretty certain, that I don't need to open another one.
    We are using the IAR EWARM compiler, which really doesn't behave like gcc at all, so the query fails (-x is not a valid option for example).

    The current solution is to provide all defines and include paths in c_cpp_properties.json. As there are keywords, which are not supported I've created a header file which uses #define to get rid of those keywords. Additionally the system includes need some defines to be present to be parsed correctly (like the compiler version). This header is included with the forcedInclude option.

    It is a bit ugly to maintain the include paths and defines in several places, so after moving to CMake, I tried using the compile_commands.json, because all information like the include directories is contained in there. The defines and include directories follow the typical -D -I scheme, so they get parsed correctly. I've explicitly mentioned the system include directory in my CMakeLists.txt, so they are also recognized as include directory.
    But still to parse the system headers correctly my header for Intellisense must be included (but only for Intellisense). Sadly, the forcedInclude option gets ignored as described in #1842 when compile_commands.json is used (and I guess the defines as well, but that wouldn't be too bad after I learned that _INTELLISENSE_ is defined if Intellisense is used). I guess I could change the CMakeLists.txt somehow to include that header, but we are aiming at safety critical systems, so I really don't want to inject some header just to make a coding tool (even a very nice one) working.

    So #6909 sounds like it would provide a solution for this, but #6931 would also provide a (more general) solution.

    A colleague wrote a small utility to fake the compiler query output, but that has no interface to CMake, so suffers from the same drawbacks as writing everything manually in c_cpp_properties.json, so I'd like to get a better native solution working.

  13. gentooise commented on Feb 16, 2021

    @gentooise
    Author

    Hi all, I'm glad this issue received a lot of visibility.

    I would live well with #6909 solution in the meantime, but I'm really hoping for something like the proposal in #6931: that would be great.

    Anyway, just to reply to Colen Garoutte-Carson (@Colengms):

    Hi gentooise . Could you set "C_Cpp.loggingLevel": "Debug", and check the C/C++ output for the command lines that are being used to query the compiler? We will actually invoke the compiler up to 4 times:

    • To determine the compiler's default C++ standard (based on system defines), so we know which to use if not provided by the config.
    • To determine the compiler's default target (-dumpmachine), so we know what IntelliSense mode to use if not provided by the config.
    • To determine the system includes and defines (which uses compilerArgs provided by the custom configuration's 'browse config'). Files that we are unable to get a file-specific custom configuration for will fall back to this config..
    • To determine the system includes and defines for files we receive a custom configuration for.

    I'm curious which of these fail. If the issue is only that the result of -dumpmachine is not recognized, that would be relatively simple to fix. Or, the issue may be with how to compose one of the other command lines.

    here's your output (private paths omitted):

    Custom configuration provider 'CMake Tools' registered
    cpptools/didChangeCppProperties
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
      Folder: C:/MYPROJECTDIR/PROJSUBDIR will be indexed
    cpptools/didChangeCustomBrowseConfiguration
    Attempting to get defaults from C++ compiler in "compilerPath" property: 'c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe'
    Querying compiler for default C++ language standard using command line: "c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe" -x c++ -E -dM nul
    Querying compiler for default C language standard using command line: "c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe" -x c -E -dM nul
    Querying compiler's default target using command line: "c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe" -dumpmachine
    Unhandled default compiler target value detected: 
    MSVC intelliSenseMode specified.  Configuring for compiler cl.exe.
      Unable to retrieve file system information for c:/myprojectdir/subdir1. error = -1
      Unable to retrieve file system information for c:/myprojectdir/subdir2. error = -1
      [...]
      Folder: C:/PROGRAM FILES (X86)/MICROSOFT VISUAL STUDIO/2019/BUILDTOOLS/VC/TOOLS/MSVC/14.27.29110/INCLUDE/* will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UM/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UCRT/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/SHARED/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/WINRT/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/CPPWINRT/ will be indexed
      Folder: C:/MYPROJECTDIR/SUBDIR1/ will be indexed
      Folder: C:/MYPROJECTDIR/SUBDIR2/ will be indexed
      [...]
    cpptools/didChangeCppProperties
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
    Code browsing service initialized
    Populate include completion cache.
    No suitable compiler found. Please set the "compilerPath" in c_cpp_properties.json.
      Folder: C:/MYPROJECTDIR/ will be indexed
    cpptools/didChangeCustomBrowseConfiguration
    Discovering files...
    Attempting to get defaults from C++ compiler in "compilerPath" property: 'c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe'
    MSVC intelliSenseMode specified.  Configuring for compiler cl.exe.
      Unable to retrieve file system information for c:/myprojectdir/subdir1. error = -1
      Unable to retrieve file system information for c:/myprojectdir/subdir2. error = -1
      [...]
      Processing folder (non-recursive): C:/PROGRAM FILES (X86)/MICROSOFT VISUAL STUDIO/2019/BUILDTOOLS/VC/TOOLS/MSVC/14.27.29110/INCLUDE
      Unable to retrieve file system information for c:/myprojectdir/subdir3. error = -1
      Unable to retrieve file system information for c:/myprojectdir/subdir4. error = -1
      [...]
      Folder: C:/PROGRAM FILES (X86)/MICROSOFT VISUAL STUDIO/2019/BUILDTOOLS/VC/TOOLS/MSVC/14.27.29110/INCLUDE/* will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UM/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UCRT/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/SHARED/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/WINRT/ will be indexed
      Folder: C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/CPPWINRT/ will be indexed
      Folder: C:/MYPROJECTDIR/SUBDIR1/ will be indexed
      Folder: C:/MYPROJECTDIR/SUBDIR2/ will be indexed
      [...]
    File discovery was aborted
      Discovering files: 101 file(s) processed
    cpptools/didChangeCppProperties
    Done discovering files.
    Populate include completion cache.
    Discovering files...
    cpptools/pauseParsing
    cpptools/didChangeCppProperties
    cpptools/pauseParsing
    cpptools/clearCustomConfigurations
    cpptools/clearCustomConfigurations
    cpptools/didChangeCustomBrowseConfiguration
    Attempting to get defaults from C++ compiler in "compilerPath" property: 'c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe'
    MSVC intelliSenseMode specified.  Configuring for compiler cl.exe.
    cpptools/resumeParsing
    cpptools/didChangeCustomBrowseConfiguration
    Attempting to get defaults from C++ compiler in "compilerPath" property: 'c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe'
    MSVC intelliSenseMode specified.  Configuring for compiler cl.exe.
    cpptools/resumeParsing
    cpptools/clearCustomConfigurations
    cpptools/clearCustomConfigurations
    cpptools/didChangeCustomBrowseConfiguration
    Attempting to get defaults from C++ compiler in "compilerPath" property: 'c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe'
    MSVC intelliSenseMode specified.  Configuring for compiler cl.exe.
    cpptools/resumeParsing
    cpptools/didChangeCustomBrowseConfiguration
    Attempting to get defaults from C++ compiler in "compilerPath" property: 'c:/program files (x86)/arm_compiler_5.06u4/bin64/armcc.exe'
      Processing folder (non-recursive): C:/PROGRAM FILES (X86)/MICROSOFT VISUAL STUDIO/2019/BUILDTOOLS/VC/TOOLS/MSVC/14.27.29110/INCLUDE
    MSVC intelliSenseMode specified.  Configuring for compiler cl.exe.
    cpptools/resumeParsing
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UM/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UCRT/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/SHARED/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/WINRT/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/CPPWINRT/
      Processing folder (recursive): C:/MYPROJECTDIR/SUBDIR1
      Processing folder (recursive): C:/MYPROJECTDIR/SUBDIR2
      Processing folder (recursive): [...]
      Processing folder (non-recursive): C:/PROGRAM FILES (X86)/MICROSOFT VISUAL STUDIO/2019/BUILDTOOLS/VC/TOOLS/MSVC/14.27.29110/INCLUDE
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UM/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/UCRT/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/SHARED/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/WINRT/
      Processing folder (recursive): C:/PROGRAM FILES (X86)/WINDOWS KITS/10/INCLUDE/10.0.18362.0/CPPWINRT/
      Processing folder (recursive): C:/MYPROJECTDIR/SUBDIR1
      Processing folder (recursive): C:/MYPROJECTDIR/SUBDIR2
      Processing folder (recursive): [...]
      Discovering files: 11702 file(s) processed
      0 file(s) removed from database
    Done discovering files.
    Parsing remaining files...
      tag parsing file: C:\MYPROJECTDIR\MYPROJECTFILE.H
      tag parsing file: [...]
      tag parsing file: C:\PROGRAM FILES (X86)\WINDOWS KITS\10\INCLUDE\10.0.18362.0\WINRT\WRL\ASYNC.H
      tag parsing file: [...]
      [...]
      Parsing: 1918 files(s) processed
    Done parsing remaining files.
    Database safe to open
    

    If you need, I can query armcc compiler by hand with any command you like and provide the output to you.

  14. github-actions commented on Apr 18, 2021

    @github-actions

    This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog.

  15. modified the milestones: Triage, Backlog on May 6, 2021
  16. removed
    more votes neededIssues that have been postponed until more community members upvote it
    on May 6, 2021
  17. github-actions commented on May 6, 2021

    @github-actions

    This feature request has received enough votes to be added to our backlog.

  18. LittleDeD commented on Apr 27, 2026

    @LittleDeD

    I’m running into a problem using the extension with a proprietary compiler (Green Hills) in a CMake-based embedded project. I think this should be the issue to post this.

    I’m using CMake Tools as the configuration provider together with a compile_commands.json. Since the compiler isn’t supported, I tried disabling compiler querying by setting compilerPath to an empty string (""). However, the extension still attempts to query the compiler for double the amount of files I have in compile_commands.json.

    This causes a couple of issues:

    • The query command is incompatible with the Green Hills compiler (-x is not a valid option, no input file is provided, etc.), so every query fails.
    • Because my compile_commands.json is quite large, the extension spends ~20–30 minutes trying to query each file (or what it seems to be double for each file as the number of failed queries are equal to aprox. 2 * number of files I have in compile_commands.json, trying to query with both / and \ in the path of the compiler. I have 1488 compiler errors in the log for the -x not being a valid option or that the compiler didnt receive a source file and 749 files in compile_commands.json).
    • During this time, IntelliSense is essentially blocked and nothing works.
    • After it finishes, IntelliSense falls back to MSVC (or another detected compiler), and ends up using incorrect system headers instead of the actual compiler ones (I tried using the compilerPath to point to my compiler, but I have the exact same behavior).

    What I don’t understand is:

    • Why is the compiler being queried so many times instead of once?
    • Why does setting compilerPath = "" not fully disable compiler querying?

    In my case, I would prefer either fully disabling compiler queries, relying purely on compile_commands.json without attempting to probe the compiler or, as I saw in other issues, a mechanism to have some settings that will let us define how the query happens or give directly the systemDefines. The main issue is that every time I open the project I must wait for half an hour to let it finish the query so the intellisense would work, even if the compiler path points to msvc or another detected compiler. If I let only the configuration provider to be cmake tools, the query is not happening, but it usually has poor results (taking 1-2 minutes to find a header/define or simply cancel the search when it can't find it, even if it exists in a included header; some compile options like a forced include or derivative macro impact the compilation of some files and the intellisense would not see them, even if I placed them in the defines section of c_cpp_properties etc.).

    I’ll attach logs and configuration details below.

    c_cpp_properties.json

    settings.json

    c_cpp_log.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions