Skip to content

'@' in compilerArgs doesn't work on Linux/Mac with 1.10.5 (Intellisense breaks) #9434

@maxgerhardt

Description

@maxgerhardt

Environment

  • OS and version: Ubuntu 20.04.4 LTS
  • VS Code: 1.68.0
  • C/C++ extension: 1.10.5
  • OS and version of remote machine (if applicable): -/-
  • GDB / LLDB version: not applicable.

Bug Summary and Steps to Reproduce

Bug Summary:

When using PlatformIO with a Raspberry Pi Pico + Arduino project on Unix-like operating systems (Linux + Mac), Intellisense fails to find all include paths. Reverting the C/C++ by Microsoft extension to 1.9.8 solves the problem. The current version 1.10.5 that you have released 3 days ago breaks it.

Steps to reproduce:

  1. Install the PlatformIO extension
  2. Create a new project, choose "Raspberry Pi Pico" as board and "Arduino" framework
  3. Let the default src/main.cpp code be.
  4. Use the project task "Build", should be successfull
  5. Observe intellisense error on #include <Arduino.h> line

Debugger Configurations

Not relevant for Intellisense. Only launch.json is auto-generated by PlatformIO with

// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY
//
// PIO Unified Debugger
//
// Documentation: https://docs.platformio.org/page/plus/debugging.html
// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug",
            "executable": "/home/max/p_test/.pio/build/pico/firmware.elf",
            "projectEnvName": "pico",
            "toolchainBinDir": "/home/max/.platformio/packages/toolchain-gccarmnoneeabi/bin",
            "internalConsoleOptions": "openOnSessionStart",
            "svdPath": "/home/max/.platformio/platforms/raspberrypi/misc/svd/rp2040.svd",
            "preLaunchTask": {
                "type": "PlatformIO",
                "task": "Pre-Debug"
            }
        },
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug (skip Pre-Debug)",
            "executable": "/home/max/p_test/.pio/build/pico/firmware.elf",
            "projectEnvName": "pico",
            "toolchainBinDir": "/home/max/.platformio/packages/toolchain-gccarmnoneeabi/bin",
            "internalConsoleOptions": "openOnSessionStart",
            "svdPath": "/home/max/.platformio/platforms/raspberrypi/misc/svd/rp2040.svd"
        },
        {
            "type": "platformio-debug",
            "request": "launch",
            "name": "PIO Debug (without uploading)",
            "executable": "/home/max/p_test/.pio/build/pico/firmware.elf",
            "projectEnvName": "pico",
            "toolchainBinDir": "/home/max/.platformio/packages/toolchain-gccarmnoneeabi/bin",
            "internalConsoleOptions": "openOnSessionStart",
            "svdPath": "/home/max/.platformio/platforms/raspberrypi/misc/svd/rp2040.svd",
            "loadMode": "manual"
        }
    ]
}

Debugger Logs

None relevant.

Other Extensions

PlatformIO: 2.4.3

Additional Information

Project with C/C++ version 1.10.5:

grafik

EXACT SAME project with C/C++ version 1.9.8:

grafik

Reference .vscode/c_cpp_properties.json

//
// !!! WARNING !!! AUTO-GENERATED FILE!
// PLEASE DO NOT MODIFY IT AND USE "platformio.ini":
// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
//
{
    "configurations": [
        {
            "name": "PlatformIO",
            "includePath": [
                "/home/max/p_test/include",
                "/home/max/p_test/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino",
                "/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino/api/deprecated",
                "/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino/api/deprecated-avr-comp",
                "/home/max/.platformio/packages/framework-arduino-mbed/variants/RASPBERRY_PI_PICO",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Camera/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Ethernet/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/GC2145",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/GPS/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/GSM/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Himax_HM01B0",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/KernelDebug/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/MCUboot/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/MLC/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/MRI/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Nano33BLE_System/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Nicla_System/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/PDM/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_Audio/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_SDCARD/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_SDRAM/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_Video/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_lvgl/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/RPC/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SE05X/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SFU/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SPI",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/STM32H747_System/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Scheduler/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SocketWrapper/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/ThreadDebug/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBAudio",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBHID/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBHOST/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBMSD/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/WiFi/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Wire",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/doom/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/ea_malloc",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/mbed-memory-status",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/openamp_arduino/src",
                "/home/max/.platformio/packages/framework-arduino-mbed/libraries/rpclib/src",
                ""
            ],
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "path": [
                    "/home/max/p_test/include",
                    "/home/max/p_test/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino",
                    "/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino/api/deprecated",
                    "/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino/api/deprecated-avr-comp",
                    "/home/max/.platformio/packages/framework-arduino-mbed/variants/RASPBERRY_PI_PICO",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Camera/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Ethernet/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/GC2145",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/GPS/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/GSM/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Himax_HM01B0",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/KernelDebug/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/MCUboot/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/MLC/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/MRI/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Nano33BLE_System/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Nicla_System/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/PDM/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_Audio/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_SDCARD/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_SDRAM/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_Video/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Portenta_lvgl/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/RPC/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SE05X/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SFU/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SPI",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/STM32H747_System/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Scheduler/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/SocketWrapper/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/ThreadDebug/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBAudio",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBHID/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBHOST/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/USBMSD/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/WiFi/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/Wire",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/doom/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/ea_malloc",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/mbed-memory-status",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/openamp_arduino/src",
                    "/home/max/.platformio/packages/framework-arduino-mbed/libraries/rpclib/src",
                    ""
                ]
            },
            "defines": [
                "PLATFORMIO=60003",
                "ARDUINO_RASPBERRY_PI_PICO",
                "ARDUINO_ARCH_RP2040",
                "ARM_MATH_CM0PLUS",
                "__CMSIS_RTOS",
                "COMPONENT_FLASHIAP=1",
                "__CORTEX_M0PLUS",
                "DEVICE_ANALOGIN=1",
                "DEVICE_FLASH=1",
                "DEVICE_I2C=1",
                "DEVICE_I2CSLAVE=1",
                "DEVICE_INTERRUPTIN=1",
                "DEVICE_PORT_IN=1",
                "DEVICE_PORT_OUT=1",
                "DEVICE_PWMOUT=1",
                "DEVICE_RESET_REASON=1",
                "DEVICE_RTC=1",
                "DEVICE_SERIAL=1",
                "DEVICE_SERIAL_FC=1",
                "DEVICE_SPI=1",
                "DEVICE_USBDEVICE=1",
                "DEVICE_USTICKER=1",
                "DEVICE_WATCHDOG=1",
                "__MBED__=1",
                "MBED_BUILD_TIMESTAMP=1652255920.4792204",
                "__MBED_CMSIS_RTOS_CM",
                "MBED_MPU_CUSTOM",
                "MBEDTLS_ENTROPY_NV_SEED",
                "PICO_NO_BINARY_INFO=1",
                "PICO_ON_DEVICE=1",
                "PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1",
                "PICO_TIME_DEFAULT_ALARM_POOL_DISABLED",
                "PICO_UART_ENABLE_CRLF_SUPPORT=0",
                "TARGET_CORTEX",
                "TARGET_CORTEX_M",
                "TARGET_LIKE_CORTEX_M0",
                "TARGET_LIKE_MBED",
                "TARGET_M0P",
                "TARGET_memmap_default",
                "TARGET_NAME=RASPBERRY_PI_PICO",
                "TARGET_RASPBERRYPI",
                "TARGET_RASPBERRY_PI_PICO",
                "TARGET_RELEASE",
                "TARGET_RP2040",
                "TOOLCHAIN_GCC",
                "TOOLCHAIN_GCC_ARM",
                "MBED_NO_GLOBAL_USING_DIRECTIVE=1",
                "CORE_MAJOR=3",
                "CORE_MINOR=1",
                "CORE_PATCH=1",
                "USE_ARDUINO_PINOUT",
                "ARDUINO=10810",
                "ARDUINO_ARCH_MBED",
                ""
            ],
            "cStandard": "c11",
            "cppStandard": "c++14",
            "compilerPath": "/home/max/.platformio/packages/toolchain-gccarmnoneeabi/bin/arm-none-eabi-gcc",
            "compilerArgs": [
                "-mcpu=cortex-m0plus",
                "-mthumb",
                "-iprefix/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino",
                "@/home/max/.platformio/packages/framework-arduino-mbed/variants/RASPBERRY_PI_PICO/includes.txt",
                ""
            ]
        }
    ],
    "version": 4
}

Also discussed in platformio/builder-framework-arduino-core-mbed#4

Intellisense can be made to work with the latest extension when transforming the

                "-iprefix/home/max/.platformio/packages/framework-arduino-mbed/cores/arduino",
                "@/home/max/.platformio/packages/framework-arduino-mbed/variants/RASPBERRY_PI_PICO/includes.txt",

part into seperate entries in the path array.

My guess: Recent versions don't parse -iprefix <path> @<include file> correctly.

Include files come from https://github.com/arduino/ArduinoCore-mbed, includes.txt from https://github.com/arduino/ArduinoCore-mbed/blob/master/variants/RASPBERRY_PI_PICO/includes.txt.

Metadata

Metadata

Assignees

Labels

Feature: ConfigurationAn issue related to configuring the extension or IntelliSenseLanguage ServicefixedCheck the Milestone for the release in which the fix is or will be available.quick fixregressionA bug that didn't exist in a previous releaseverifiedBug has been reproduced

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions