vscode-cmake-tools: Intellisense fails to find Qt header files

Brief Issue Summary

cmake-tools fails to find Qt header files. It appears to be sending an empty browsePath to cpp-tools

To reproduce on macOS 11.6.2 with Xcode 13.2.1:

$ git clone git@github.com:rectalogic/vscode-cmake.git
$ cd vscode-cmake
$ ./install-qt  # this requires python3, e.g. from brew

Then open vscode-cmake in vscode and configure cmake-tools.

vscode can successfully build the project, but if you open main.cpp it fails to find the Qt <QApplication> header. header-not-found

CMake Tools Diagnostics

{
  "os": "darwin",
  "vscodeVersion": "1.63.2",
  "cmtVersion": "1.9.2",
  "configurations": [
    {
      "folder": "/Users/aw/Projects/rectalogic/vscode-cmake",
      "cmakeVersion": "3.22.1",
      "configured": true,
      "generator": "Ninja",
      "usesPresets": false,
      "compilers": {
        "C": "/usr/bin/clang",
        "CXX": "/usr/bin/clang++"
      }
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "Debug",
    "buildTypesSeen": [
      "Debug"
    ],
    "requests": [
      "file:///Users/aw/Projects/rectalogic/vscode-cmake/main.cpp"
    ],
    "responses": [
      {
        "uri": "file:///Users/aw/Projects/rectalogic/vscode-cmake/main.cpp",
        "configuration": {
          "defines": [
            "QT_CORE_LIB",
            "QT_GUI_LIB",
            "QT_WIDGETS_LIB"
          ],
          "standard": "gnu++17",
          "includePath": [
            "/users/aw/projects/rectalogic/vscode-cmake/build/main_autogen/include",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtcore.framework",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtcore.framework/headers",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/mkspecs/macx-clang",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/include",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtwidgets.framework",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtwidgets.framework/headers",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtgui.framework",
            "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtgui.framework/headers"
          ],
          "compilerPath": "/usr/bin/clang++",
          "compilerArgs": [
            "-g",
            "-isysroot",
            "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk",
            "-mmacosx-version-min=11.6",
            "-std=gnu++17"
          ]
        }
      }
    ],
    "partialMatches": [],
    "targetCount": 3,
    "executablesCount": 1,
    "librariesCount": 0,
    "targets": [
      {
        "name": "main",
        "type": "EXECUTABLE"
      },
      {
        "name": "main_autogen",
        "type": "UTILITY"
      },
      {
        "name": "main_autogen_timestamp_deps",
        "type": "UTILITY"
      }
    ]
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": true
    }
  ]
}

C/C++ Log Diagnostics

The Custom browse configuration has an empty browsePath, this may be the issue?

-------- Diagnostics - 1/13/2022, 6:20:38 PM
Version: 1.7.1
Current Configuration:
{
    "name": "Mac cmake",
    "configurationProvider": "ms-vscode.cmake-tools",
    "compilerPathIsExplicit": false,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "intelliSenseModeIsExplicit": false,
    "includePath": [
        "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1",
        "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include",
        "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include",
        "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include"
    ],
    "macFrameworkPath": [
        "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
    ],
    "compilerArgs": [],
    "cStandard": "c17",
    "cppStandard": "c++98",
    "intelliSenseMode": "macos-clang-x64",
    "mergeConfigurations": false,
    "compilerPath": "/usr/bin/clang",
    "browse": {
        "path": [
            "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1",
            "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include",
            "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include",
            "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
            "${workspaceFolder}"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Custom browse configuration: 
{
    "browsePath": []
}
Custom configurations:
[ /Users/aw/Projects/rectalogic/vscode-cmake/main.cpp ]
{
    "defines": [
        "QT_CORE_LIB",
        "QT_GUI_LIB",
        "QT_WIDGETS_LIB"
    ],
    "standard": "gnu++17",
    "includePath": [
        "/users/aw/projects/rectalogic/vscode-cmake/build/main_autogen/include",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtcore.framework",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtcore.framework/headers",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/mkspecs/macx-clang",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/include",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtwidgets.framework",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtwidgets.framework/headers",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtgui.framework",
        "/users/aw/projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/qtgui.framework/headers"
    ],
    "compilerPath": "/usr/bin/clang++",
    "compilerArgs": [
        "-g",
        "-isysroot",
        "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk",
        "-mmacosx-version-min=11.6",
        "-std=gnu++17"
    ]
}
Translation Unit Mappings:
[ /Users/aw/Projects/rectalogic/vscode-cmake/main.cpp ]:
    /Users/aw/Projects/rectalogic/vscode-cmake/main.cpp
Translation Unit Configurations:
[ /Users/aw/Projects/rectalogic/vscode-cmake/main.cpp ]:
    Process ID: 34343
    Memory Usage: 4 MB
    Compiler Path: /usr/bin/clang++
    Includes:
        /Users/aw/Projects/rectalogic/vscode-cmake/build/main_autogen/include
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/QtCore.framework
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/QtCore.framework/Versions/A/Headers
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/mkspecs/macx-clang
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/include
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/QtWidgets.framework
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/QtWidgets.framework/Versions/A/Headers
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/QtGui.framework
        /Users/aw/Projects/rectalogic/vscode-cmake/qt/6.2.2/macos/lib/QtGui.framework/Versions/A/Headers
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
    Frameworks:
        /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks
    Defines:
        QT_CORE_LIB
        QT_GUI_LIB
        QT_WIDGETS_LIB
    Standard Version: c++17
    IntelliSense Mode: macos-clang-x64
    Other Flags:
        --clang
        --clang_version=110000
Total Memory Usage: 4 MB

Debug Log

[main] Building folder: vscode-cmake 
[main] Saving open files before configure/build
[build] Starting build
[driver] Start build all
[proc] Executing command: /opt/local/bin/cmake --build /Users/aw/Projects/rectalogic/vscode-cmake/build --config Debug --target all -j 18 --
[build] [1/4  25% :: 0.509] Automatic MOC and UIC for target main
[build] [3/4  50% :: 0.644] Building CXX object CMakeFiles/main.dir/main_autogen/mocs_compilation.cpp.o
[build] [3/4  75% :: 2.144] Building CXX object CMakeFiles/main.dir/main.cpp.o
[build] [4/4 100% :: 2.329] Linking CXX executable main
[cmakefileapi-parser] Read reply folder: /Users/aw/Projects/rectalogic/vscode-cmake/build/.cmake/api/v1/reply
[cmakefileapi-parser] Found index files: ["cache-v2-db17aa5346b3063312c4.json","codemodel-v2-f9968e0ef990a41bb4f5.json","directory-.-Debug-f5ebdc15457944623624.json","index-2022-01-13T23-09-19-0193.json","target-main-Debug-e405c207129ca950dff6.json","target-main_autogen-Debug-71586aa8a38f069c3446.json","target-main_autogen_timestamp_deps-Debug-0c5f526a5cac1370cfef.json","toolchains-v1-248d8c0a238b331e6ecf.json"]
[driver] Run _refreshExpansions
[driver] Run _refreshExpansions cb
[cache] Reading CMake cache file /Users/aw/Projects/rectalogic/vscode-cmake/build/CMakeCache.txt
[cache] Parsing CMake cache string
[build] Build finished with exit code 0
[extension] [3702] cmake.build finished (returned 0)

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 16 (6 by maintainers)

Most upvoted comments

Unfortunately that information is not in the JSON files we use to configure IntelliSense so we’ll have to work around it. It looks like this was already reported to Kitware, but the issue has not been addressed. https://gitlab.kitware.com/cmake/cmake/-/issues/19897

@bobbrow Looks like that issue was recently resolved by a change to the CMake codemodel.

@rectalogic Thanks for pointing that out. We’ll work on incorporating the File API changes from CMake 3.27 in our 1.15 extension release.

{
  "configurations": [
    {
      "name": "Mac",
      "includePath": [
        "${workspaceFolder}/**",
        "/usr/local/Cellar/python@3.11/3.11.2_1/Frameworks/Python.framework/Headers/",
        "${workspaceFolder}/packages/libuiohook/include/",
        "${workspaceFolder}/packages/clip/",
        "/usr/local/Cellar/qt@5/5.15.8_2/lib/QtWidgets.framework/Headers/",
        "/usr/local/Cellar/qt@5/5.15.8_2/lib/QtWidgets.framework/",
        "/usr/local/Cellar/qt@5/5.15.8_2/include/"
      ],
      "defines": [],
      "macFrameworkPath": [
        "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
      ],
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "macos-clang-x64",
      "configurationProvider": "ms-vscode.cmake-tools"
    }
  ],
  "version": 4
}

This is my c_cpp_properties.json and vscode can find <QApplication> and my version of cmake-tools is v1.13.45 and my qt is installed by homebrew.

截屏2023-04-17 00 26 27