Skip to content

[Bug] UTILITY targets with source files can interfere with cpptools includePath generation when Build Target is all #4404

@malsyned

Description

@malsyned

Brief Issue Summary

Some UTILITY targets, such as the ones created by Doxygen.cmake, have a list of sources attached. If one of these targets happens to be placed at index [0] in the list of configurations passed to CppConfigurationProvider.updateFileGroup() by updateConfigurationData(), then provideConfigurations() for those sources will provide incomplete configurations for those sources.

This is because such a UTILITY target breaks the assumption articulated in this comment in getConfiguration():

return configurations?.values().next().value; // Any value is fine if the target doesn't match

CMake Tools Diagnostics

// With "all" selected as Build Target:
{
  "os": "linux",
  "vscodeVersion": "1.99.2",
  "cmtVersion": "1.13.0",
  "configurations": [
    {
      "folder": "/home/malsyned/work/preferred/fsg/preferred-fsg",
      "cmakeVersion": "4.0.0",
      "configured": true,
      "generator": "Unix Makefiles",
      "usesPresets": true,
      "compilers": {
        "C": "/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang",
        "CXX": "/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang++"
      }
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "Debug",
    "buildTypesSeen": [
      "Debug"
    ],
    "requests": [
      "file:///home/malsyned/work/preferred/fsg/preferred-fsg/src/main.c"
    ],
    "responses": [
      {
        "uri": "file:///home/malsyned/work/preferred/fsg/preferred-fsg/src/main.c",
        "configuration": {
          "includePath": [],
          "defines": [],
          "compilerPath": "/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang++",
          "compilerArgs": [],
          "compilerFragments": [
            "--target=arm-none-eabi"
          ]
        }
      }
    ],
    "partialMatches": [],
    "targetCount": 44,
    "executablesCount": 2,
    "librariesCount": 12,
    "targets": []
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": true
    }
  ]
}

// With a valid executable selected as Build Target
{
  "os": "linux",
  "vscodeVersion": "1.99.2",
  "cmtVersion": "1.13.0",
  "configurations": [
    {
      "folder": "/home/malsyned/work/preferred/fsg/preferred-fsg",
      "cmakeVersion": "4.0.0",
      "configured": true,
      "generator": "Unix Makefiles",
      "usesPresets": true,
      "compilers": {
        "C": "/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang",
        "CXX": "/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang++"
      }
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "Debug",
    "buildTypesSeen": [
      "Debug"
    ],
    "requests": [
      "file:///home/malsyned/work/preferred/fsg/preferred-fsg/src/main.c"
    ],
    "responses": [
      {
        "uri": "file:///home/malsyned/work/preferred/fsg/preferred-fsg/src/main.c",
        "configuration": {
          "includePath": [
            "/home/malsyned/work/preferred/fsg/preferred-fsg/src/app",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/_deps/freertos-kernel-src/include",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/src/arm/ti/rm44l520pge/openrtos",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/src/arm/ti/rm44l520pge/halcogen",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/src/arm/ti/rm44l520pge/halcogen/include",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/src/arm/ti/rm44l520pge/openrtos/Source_Code/OpenRTOS/kernel/portable/GCC/Hercules",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/src/arm",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/_deps/rtt-src/RTT",
            "/home/malsyned/work/preferred/fsg/preferred-fsg/src/arm/ti/rm44l520pge"
          ],
          "defines": [
            "DEBUG"
          ],
          "compilerPath": "/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang",
          "compilerArgs": [],
          "compilerFragments": [
            "-mcpu=cortex-r4f -mfpu=vfpv3-d16 -mfloat-abi=hard -fno-strict-aliasing -fdata-sections -ffunction-sections -g",
            "-g3",
            "-fdebug-macro",
            "--target=arm-none-eabi"
          ]
        }
      }
    ],
    "partialMatches": [],
    "targetCount": 44,
    "executablesCount": 2,
    "librariesCount": 12,
    "targets": []
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": true
    }
  ]
}

Debug Log

[main] Configuring project: preferred-fsg 
[main] Saving open files before configure/build
[driver] Removing /home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/CMakeCache.txt
[driver] Removing /home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/CMakeFiles
[driver] Start configure 
[driver] Running pre-configure checks and steps
[cmakefileapi-driver] Configuring using preset
[cmakefileapi-driver] Invoking CMake /usr/bin/cmake with arguments ["-DARM_CPU=cortex-r4f","-DARM_FPU=vfpv3-d16","-DARM_FLOAT_ABI=hard","-DCMAKE_EXPORT_COMPILE_COMMANDS=1","-DCPPUTEST_TESTS_DETAILED=1","-DCMAKE_BUILD_TYPE=Debug","-DCMAKE_TOOLCHAIN_FILE=cmake/llvm-et-arm.cmake","-S","/home/malsyned/work/preferred/fsg/preferred-fsg","-B","/home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug"]
[proc] Executing command: /usr/bin/cmake -DARM_CPU=cortex-r4f -DARM_FPU=vfpv3-d16 -DARM_FLOAT_ABI=hard -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCPPUTEST_TESTS_DETAILED=1 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/llvm-et-arm.cmake -S /home/malsyned/work/preferred/fsg/preferred-fsg -B /home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug
[proc]   with environment: {"CASROOT":"/usr","CHROME_DESKTOP":"code.desktop","CINNAMON_VERSION":"6.4.9","CMT_DEVRUN":"1","CSF_DrawPluginDefaults":"/usr/share/opencascade/resources/DrawResources","CSF_EXCEPTION_PROMPT":"1","CSF_IGESDefaults":"/usr/share/opencascade/resources/XSTEPResource","CSF_LANGUAGE":"us","CSF_MDTVTexturesDirectory":"/usr/share/opencascade/resources/Textures","CSF_MIGRATION_TYPES":"/usr/share/opencascade/resources/StdResource/MigrationSheet.txt","CSF_OCCTResourcePath":"/usr/share/opencascade/resources","CSF_PluginDefaults":"/usr/share/opencascade/resources/StdResource","CSF_SHMessage":"/usr/share/opencascade/resources/SHMessage","CSF_STEPDefaults":"/usr/share/opencascade/resources/XSTEPResource","CSF_ShadersDirectory":"/usr/share/opencascade/resources/Shaders","CSF_StandardDefaults":"/usr/share/opencascade/resources/StdResource","CSF_StandardLiteDefaults":"/usr/share/opencascade/resources/StdResource","CSF_TObjDefaults":"/usr/share/opencascade/resources/StdResource","CSF_TObjMessage":"/usr/share/opencascade/resources/TObj","CSF_XCAFDefaults":"/usr/share/opencascade/resources/StdResource","CSF_XSMessage":"/usr/share/opencascade/resources/XSMessage","CSF_XmlOcafResource":"/usr/share/opencascade/resources/XmlOcafResource","DBUS_SESSION_BUS_ADDRESS":"unix:path=/run/user/1000/bus","DEBUGINFOD_URLS":"https://debuginfod.archlinux.org ","DESKTOP_SESSION":"cinnamon","DISPLAY":":0","DRAWDEFAULT":"/usr/share/opencascade/resources/DrawResources/DrawDefault","DRAWHOME":"/usr/share/opencascade/resources/DrawResources","EDITOR":"/usr/bin/nano","ELECTRON_NO_ATTACH_CONSOLE":"1","GDK_BACKEND":"x11","GDMSESSION":"cinnamon","GIO_LAUNCHED_DESKTOP_FILE":"/usr/share/applications/code.desktop","GIO_LAUNCHED_DESKTOP_FILE_PID":"14652","GJS_DEBUG_OUTPUT":"stderr","GJS_DEBUG_TOPICS":"JS ERROR;JS LOG","GNOME_DESKTOP_SESSION_ID":"this-is-deprecated","GTK2_RC_FILES":"/home/malsyned/.gtkrc-2.0","GTK3_MODULES":"xapp-gtk3-module","GTK_MODULES":"canberra-gtk-module","HG":"/usr/bin/hg","HOME":"/home/malsyned","LANG":"en_US.UTF-8","LC_ADDRESS":"en_US.UTF-8","LC_IDENTIFICATION":"en_US.UTF-8","LC_MEASUREMENT":"en_US.UTF-8","LC_MONETARY":"en_US.UTF-8","LC_NAME":"en_US.UTF-8","LC_NUMERIC":"en_US.UTF-8","LC_PAPER":"en_US.UTF-8","LC_TELEPHONE":"en_US.UTF-8","LC_TIME":"en_US.UTF-8","LESSOPEN":"|/usr/bin/lesspipe.sh %s","LIBVA_DRIVER_NAME":"nvidia","LLVM_ET_ARM_PATH":"/home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64","LOGNAME":"malsyned","MAIL":"/var/spool/mail/malsyned","MMGT_CLEAR":"1","MOTD_SHOWN":"pam","NO_AT_BRIDGE":"1","ORIGINAL_XDG_CURRENT_DESKTOP":"X-Cinnamon","PATH":"/home/malsyned/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/lib/jvm/default/bin:/opt/microchip/xc16/v2.10/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin","PWD":"/home/malsyned","PYTHONSTARTUP":"/home/malsyned/.pythonrc","QT_QPA_PLATFORMTHEME":"qt5ct","SAL_USE_VCLPLUGIN":"gtk","SESSION_MANAGER":"local/malsyned:@/tmp/.ICE-unix/3848,unix/malsyned:/tmp/.ICE-unix/3848","SHELL":"/bin/bash","SHLVL":"1","USER":"malsyned","VSCODE_CLI":"1","VSCODE_CRASH_REPORTER_PROCESS_TYPE":"extensionHost","VSCODE_CWD":"/home/malsyned","VSCODE_ESM_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"/run/user/1000/vscode-f2c9b164-1.99-main.sock","VSCODE_NLS_CONFIG":"{\"userLocale\":\"en-us\",\"osLocale\":\"en-us\",\"resolvedLanguage\":\"en\",\"defaultMessagesFile\":\"/opt/visual-studio-code/resources/app/out/nls.messages.json\",\"locale\":\"en-us\",\"availableLanguages\":{}}","VSCODE_PID":"14670","XAUTHORITY":"/home/malsyned/.Xauthority","XC16_TOOLCHAIN_ROOT":"/opt/microchip/xc16/v2.10","XDG_CURRENT_DESKTOP":"X-Cinnamon","XDG_DATA_DIRS":"/home/malsyned/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop","XDG_GREETER_DATA_DIR":"/var/lib/lightdm-data/malsyned","XDG_RUNTIME_DIR":"/run/user/1000","XDG_SEAT":"seat0","XDG_SEAT_PATH":"/org/freedesktop/DisplayManager/Seat0","XDG_SESSION_CLASS":"user","XDG_SESSION_DESKTOP":"cinnamon","XDG_SESSION_ID":"2","XDG_SESSION_PATH":"/org/freedesktop/DisplayManager/Session0","XDG_SESSION_TYPE":"x11","XDG_VTNR":"7","_":"/opt/visual-studio-code/bin/../code","ELECTRON_RUN_AS_NODE":"1","VSCODE_L10N_BUNDLE_LOCATION":"","VSCODE_DOTNET_INSTALL_TOOL_ORIGINAL_HOME":"/home/malsyned","APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL":"1","APPLICATIONINSIGHTS_CONFIGURATION_CONTENT":"{}"}
[cmake] -- The C compiler identification is Clang 19.1.5
[cmake] -- The CXX compiler identification is Clang 19.1.5
[cmake] -- The ASM compiler identification is Clang with GNU-like command-line
[cmake] -- Found assembler: /home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang
[cmake] -- Detecting C compiler ABI info
[cmake] -- Detecting C compiler ABI info - done
[cmake] -- Check for working C compiler: /home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang - skipped
[cmake] -- Detecting C compile features
[cmake] -- Detecting C compile features - done
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - done
[cmake] -- Check for working CXX compiler: /home/malsyned/packages/LLVM-ET-Arm-19.1.5-Linux-x86_64/bin/clang++ - skipped
[cmake] -- Detecting CXX compile features
[cmake] -- Detecting CXX compile features - done
[cmake] -- Performing Test DEBUG_MACRO_FLAG
[cmake] -- Performing Test DEBUG_MACRO_FLAG - Success
[cmake] -- Performing Test GENERAL_REGS_ONLY_FLAG
[cmake] -- Performing Test GENERAL_REGS_ONLY_FLAG - Failed
[cmake] -- Performing Test WARN_VFP_CLOBBER_FLAG
[cmake] -- Performing Test WARN_VFP_CLOBBER_FLAG - Success
[cmake] -- Found Doxygen: /usr/bin/doxygen (found version "1.13.2") found components: doxygen dot
[cmake] -- Found Git: /usr/bin/git (found version "2.49.0")
[cmake] -- Using a custom FREERTOS_PORT.
[cmake] -- Looking for sys/types.h
[cmake] -- Looking for sys/types.h - found
[cmake] -- Looking for stdint.h
[cmake] -- Looking for stdint.h - found
[cmake] -- Looking for stddef.h
[cmake] -- Looking for stddef.h - found
[cmake] -- Check size of long long
[cmake] -- Check size of long long - done
[cmake] -- Setting CPPUTEST_PLATFORM: Gcc
[cmake] -- Looking for fopen_s
[cmake] -- Looking for fopen_s - not found
[cmake] -- Looking for kill
[cmake] -- Looking for kill - not found
[cmake] -- Looking for fork
[cmake] -- Looking for fork - not found
[cmake] -- Looking for waitpid
[cmake] -- Looking for waitpid - not found
[cmake] -- Looking for gettimeofday
[cmake] -- Looking for gettimeofday - not found
[cmake] -- Looking for pthread_mutex_lock
[cmake] -- Looking for pthread_mutex_lock - not found
[cmake] -- Looking for strdup
[cmake] -- Looking for strdup - not found
[cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
[cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
[cmake] -- Check if compiler accepts -pthread
[cmake] -- Check if compiler accepts -pthread - no
[cmake] -- Looking for pthread_create in pthreads
[cmake] -- Looking for pthread_create in pthreads - not found
[cmake] -- Looking for pthread_create in pthread
[cmake] -- Looking for pthread_create in pthread - not found
[cmake] -- Could NOT find Threads (missing: Threads_FOUND) 
[cmake] -- Configuring done (2.3s)
[cmake] -- Generating done (0.1s)
[cmake] -- Build files have been written to: /home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug
[cmakefileapi-parser] Read reply folder: /home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/.cmake/api/v1/reply
[cmakefileapi-parser] Found index files: ["cache-v2-67820b73205ab44be163.json","cmakeFiles-v1-9179efbbaa19715f3a9a.json","codemodel-v2-03d8cad993f644b0a492.json","directory-.-Debug-bd45beedfb51236c4180.json","directory-_deps.cpputest-build-Debug-2001403ed54af95ad282.json","directory-_deps.cpputest-build.src-Debug-c5247a96bf30e8d9ffc4.json","directory-_deps.cpputest-build.src.CppUTest-Debug-f7e5e05e2376250fea8b.json","directory-_deps.cpputest-build.src.CppUTestExt-Debug-faf64c9264f1013c6ac0.json","directory-_deps.freertos-kernel-build-Debug-5154e9a5facf64cfd517.json","directory-_deps.freertos-kernel-build.include-Debug-d356773737b72fa6bc5a.json","directory-_deps.freertos-kernel-build.portable-Debug-b5f863bdaf8ff39bb0da.json","directory-src.app-Debug-2e167ed549b5f7501b6a.json","directory-src.arm-Debug-6fbaf8ae9d717803baf2.json","directory-src.arm.ti.rm44l520pge-Debug-7f28aaf7b3a60d50b60f.json","directory-src.arm.ti.rm44l520pge.halcogen-Debug-a334fd7129867a6a5bec.json","directory-src.arm.ti.rm44l520pge.openrtos-Debug-f6ae54396dbbf5693454.json","directory-tests-Debug-b01f6abb0ab61427ef3b.json","index-2025-04-15T01-59-12-0727.json","target-Continuous-Debug-e1cbd7b23bb9ed6c0b72.json","target-ContinuousBuild-Debug-f46c841649756006ad00.json","target-ContinuousConfigure-Debug-8227b390ea7a72618aac.json","target-ContinuousCoverage-Debug-ee5b3d75515c452ea995.json","target-ContinuousMemCheck-Debug-83814e786e6c436c120a.json","target-ContinuousStart-Debug-558b13874adbfd41d68c.json","target-ContinuousSubmit-Debug-b26b87c5590a7289b2d9.json","target-ContinuousTest-Debug-a06e58aded5796b63837.json","target-ContinuousUpdate-Debug-31e432bc9fb623995563.json","target-CppUTest-Debug-7b0a44eb9900033287bc.json","target-CppUTestExt-Debug-87697f85ccd5d54d8da7.json","target-Experimental-Debug-f4af877508453d517859.json","target-ExperimentalBuild-Debug-e959fd81e597253b91ef.json","target-ExperimentalConfigure-Debug-e9501939413a34e9be33.json","target-ExperimentalCoverage-Debug-df7de4a4c329ca27e594.json","target-ExperimentalMemCheck-Debug-a36468afa1f39435ccc6.json","target-ExperimentalStart-Debug-dd9f88a5f1c51246bf4e.json","target-ExperimentalSubmit-Debug-02ca7017426fe88e5131.json","target-ExperimentalTest-Debug-987fb328e465efe07914.json","target-ExperimentalUpdate-Debug-6d93f6f03ed14abb1761.json","target-Nightly-Debug-463f6e1cb9a9d6b8c641.json","target-NightlyBuild-Debug-3bef9c0b6e73eca0574b.json","target-NightlyConfigure-Debug-91d795028dd5f81f0dc1.json","target-NightlyCoverage-Debug-c9b389b4b84ac128f436.json","target-NightlyMemCheck-Debug-b65e9c1addf4070f633c.json","target-NightlyMemoryCheck-Debug-a849357c696adc22d25e.json","target-NightlyStart-Debug-45b585be59935c89fe0d.json","target-NightlySubmit-Debug-2fd9533183372570cd19.json","target-NightlyTest-Debug-9e3712890fc74af58f2f.json","target-NightlyUpdate-Debug-9c7be0b2924e45f6c0f5.json","target-app-Debug-3b7f545f7114ad367de6.json","target-doc-Debug-3d28f2d638c9d2949a87.json","target-freertos_config-Debug-d1e8d7fcf9da251fc951.json","target-freertos_kernel-Debug-9ffbf0fab4dddd8fbe2d.json","target-freertos_kernel_port-Debug-891b43989f5d69e0277a.json","target-freertos_kernel_port_headers-Debug-d1c68409f9fbb429f34a.json","target-gitdescribe-Debug-4422059a8d49f57268e0.json","target-halcogen-Debug-1060c74a922c2ae1ec9d.json","target-hercules_bsp-Debug-3f675fb98a203c7cce63.json","target-preferred-fsg-Debug-9c52a2e28b306641b439.json","target-preferred-fsg-tests-all-Debug-322493639340846e0c06.json","target-segger-rtt-Debug-a151acc331202c4a0d4c.json","target-segger-rtt-picolibc-Debug-a5e2134c4fb246ddaf1d.json","target-segger-rtt-stdstreams-Debug-47ae225c03bc44a63f53.json","toolchains-v1-852637e0fed7669a4b9f.json"]
[cache] Reading CMake cache file /home/malsyned/work/preferred/fsg/preferred-fsg/build/arm-debug/CMakeCache.txt
[cache] Parsing CMake cache string
[extension] [6171] cmake.cleanConfigure finished (returned {"result":0,"resultType":0})

Additional Information

IntelliSense fails to find header files when Build Target is all:
Image

IntelliSense finds header files when Build Target is preferred-fsg:
Image

CMake File API replies for a UTILITY target and an EXECUTABLE target which both have src/main.c as a source file, leading to this bug:

target-doc-Debug-3d28f2d638c9d2949a87.json

target-preferred-fsg-Debug-9c52a2e28b306641b439.json

Metadata

Metadata

Assignees

No one assigned

    Labels

    buga bug in the product

    Type

    No type

    Projects

    Status

    Blocked

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions