Visual Studio 代码:C 包含路径

新手上路,请多包涵

我目前正在使用 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"?

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

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

谢谢!

原文由 Deftness 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 858
2 个回答

好吧,这很愚蠢,但如果有人使用 Visual Studio Code 并且没有一个简单的项目。这些说明假设您使用的是 clang 编译器:

  1. 打开你的项目目录
  2. 打开 .vscode/settings.json
  3. 在 JSON 对象内部配置以下行:
    // Compiler options for C++ (e.g. ['-std=c++11'])
   "clang.cxxflags": [
       "-I/path/to/my/include/directory" // header files
   ],

原文由 Deftness 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你使用 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 智能感知找到所有必要的路径。

[环境]

Ubuntu:16.04.3

VS代码:1.23.1

VSCode 插件:C/C++ 0.17.0、CMAKE 0.0.17、CMakeTools 0.11.1

原文由 r0n9 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题