c++ - Visual Studio Code : C++ include path

标签 c++ visual-studio-code include-path

我目前正在使用 https://marketplace.visualstudio.com/items?itemName=mitaki28.vscode-clang这是一个很棒的访问成员函数的小工具。

但是,我在导入的项目中遇到了一个问题。虽然上面的 clang 功能有效,但我在使用包含目录时遇到了特殊问题。我的项目结构如下:

|- src/
   |- main.cpp
|- include/
   |- MyHelper.h
|- CMakeLists.txt

有没有办法在 Visual Studio Code 中配置我的包含目录,以便在 main.cpp 中我可以这样做: #include "MyHelper.h" 而不是 #include "include/MyHelper.h"?

在编辑器中,它突出显示我的 include 声明它无法找到该文件。虽然编辑器没什么大不了的(我的项目编译),但随后的问题是 vscode-clang 插件不起作用,因为它看不到文件。

也许甚至让它在编辑器中使用我的 CMakeLists.txt 中的配置来进行必要的包含?

谢谢!

最佳答案

如果您使用的是 CMake,VSCode 有 CMake 插件来帮助您构建项目。所以你不需要修改settings.json。只需使用:

include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") 

或者如果没有其他模块使用该文件夹中的头文件,您可以使用类似的东西:

target_include_directories(MyHelper, "${CMAKE_CURRENT_SOURCE_DIR}/include") 

如果只需要项目构建成功。这就是整个故事。

在这种情况下,您会在#include 语句下看到一些绿色的锯齿形线条,这会刺痛您的眼睛。您需要生成 c_cpp_properties.json。它与帮助编译器构建代码无关,而是帮助VSCode intellisense 实现库和头文件的存在。同样,您可以通过在 CMakeLists.txt 中添加 CMake 选项来利用 CMake:

add_definitions(-DCMAKE_EXPORT_COMPILE_COMMANDS=ON)

CMake 将在您的构建目录下生成一个文件 compile_commands.json。 VSCode 能够解析 Json 文件并根据该文件中的内容找到包含路径。所以你需要做的只是让 VSCode 知道 Json 文件在哪里。您可以通过在 c_cpp_properties.json 中添加以下行来做到这一点:

 "configurations": [
        {
            "name": "Mac",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json",
            ...
        }],

重建项目会让 VSCode intellisense 找到所有必要的路径。

[环境]
Ubuntu: 16.04.3
VS代码:1.23.1
VSCode 插件:C/C++ 0.17.0、CMAKE 0.0.17、CMakeTools 0.11.1

关于c++ - Visual Studio Code : C++ include path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122358/

相关文章:

c++ - PBS_MARQUEE Progressbar WinApi

c++ - 在 C++ 中使用 STL 从上到下然后从左到右对 Vector<Points> 进行排序

c++ - VS代码: How to add include path of project subDirectory?

c++ - 包含 "flint.h"或 "flint/flint.h"是更好的做法

c++ - 使用 C++ 和 [ERROR] unresolved external symbol _mysql_error@4 referenced in function _main 连接 mysql

c++ - FFT 与 DFT 有何不同?如何用 C++ 实现它们?

python - vscode 在 docker 实例中运行/调试 python

visual-studio-code - VSCode 说找不到 jest.js 文件

php - 如何包含文档根目录之外的文件?

c - fatal error : bmpfile. h:没有这样的文件或目录