我有一个 cmake 项目,其中包含:
名为 Project1 的静态库
名为 Project2 的静态库依赖于 Project1
一个名为 Project3 的可执行文件依赖于这两个库
一切都按预期工作(makefile,它正在正常构建和运行,...), 但问题是 vscode intellisense 只是找不到头文件 在每个子目录上使用 target_include_directories 指定的文件夹。
智能感知可以找到默认标头(iostream、向量等)。
我还尝试将包含目录放入 c_cpp_properties.json 中:
"includePath": [
"${workspaceFolder}/Project1/src/**",
"${workspaceFolder}/Project2/src/**",
"${workspaceFolder}/Project3/src/**"
]
但是也没有成功。
我还尝试将标题/源手动放入所有 CMakeLists.txt 文件中(不使用 file(GLOB_RECURSE)) 但也没有成功。
这个项目只是我为了展示问题而制作的一个小例子,但它也发生在所有其他项目中。
该项目可以在这里找到:https://github.com/gabrielmaia2/CmakeTest
对于那些仍然遇到这个非常恼人的问题的人,对我有用的解决方案是禁用任何
C++
扩展,即 Microsoft C++ 扩展包,然后再次启用它们。
找到了。扩展“C/C++ Clang Command Adapter”显示错误,因为未配置 clang。我刚刚禁用了它(因为我没有使用它),现在它按预期工作。
在 cpp_properties.json 文件的“includePath”部分中,添加“${workspaceFolder}/**”以包含workspaceFolder 的所有子目录的路径。这解决了我使用智能感知检测头文件的问题。