在macOS上使用Visual Studio Code + Qt + Intellisense

4

Visual Studio Code 出现以下错误:

cannot open source file "QtWidgets/qtwidgetsglobal.h" (dependency of "QApplication")C/C++(1696)

我有一个使用CMake编译和构建成功的项目,但似乎Intellisense无法正常工作。

在路径中有一个包含qtwidgetsglobal.h的目录:

/usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework/Headers

还有一件事:

目录/usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework包含目录Headers和奇怪的可执行文件QtWidgets。我原以为需要添加-I/usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework,因为QtCreator同时具有 /usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework/usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework/Headers 但是什么也没起作用。

实际上,Visual Studio Code似乎忽略了这两个目录 /usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework/usr/local/Cellar/qt/5.13.1/lib/QtWidgets.framework/Headers

有没有建议可以使Intellisense与Visual Studio Code一起工作。


你有阅读过这个文档吗? - Alan Birtles
是的,所有必需的包含应该从compiler-commands.json中获取。我的其他依赖项都正常工作,除了Qt。 - Daniil
2个回答

4
你需要使用compileCommands而不是cake-tools configurationProvider。
因此,在你的c_cpp_properties.json中添加以下行:
"compileCommands": "${workspaceFolder}/build/compile_commands.json",

并删除

"configurationProvider": "ms-vscode.cmake-tools",

完整的配置文件应该长这样:
{
    "configurations": [
        {
            "name": "Mac",
            "compilerPath": "/usr/bin/clang",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json",
            "browse": {
                "limitSymbolsToIncludedHeaders": true
            },
            "macFrameworkPath": [
                "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "cStandard": "c11",
            "intelliSenseMode": "clang-x64",
            "cppStandard": "c++14"
        }
    ],
    "version": 4
}

0

我不使用VSCode进行编译,因此我没有构建文件夹,上述建议对我无效。

在c_cpp_properties.json文件的macFrameworkPath部分添加一个包含框架的Qt文件夹后,我成功让Intellisense与QT一起工作:

"macFrameworkPath": [
    "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks",
    "~/Qt/6.3.1/macos/lib/**"

提示:在采用这种简单的解决方案之前,我曾经尝试过添加文件关联来强制将无扩展名的QT头文件(例如 )视为CPP类型文件。有人告诉我这对他们有效,但对我来说并没有。

"files.associations": {
        "*.": "cpp"
},

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接