我正在从Eclipse CDT转换。使用预处理器定义(无论是在Makefile中显式指定还是通过外部自动生成的头文件包含)导航C / C ++代码时,必须使用预处理器宏功能。如果没有这个,导航Linux源是不可能的,如this seminal wiki page on using Eclipse to study the Linux code所述。我正在寻找VSC的等效功能。会很感激指针。
问候
答案 0 :(得分:3)
答案 1 :(得分:1)
我不需要添加arch文件夹(对于x86_64,它实际上是空的),但是需要添加一些基本定义,以使编译器特定的类型和宏对intellisense可见。我的最小配置如下所示。为了获得完美的结果,您必须添加内核.config文件(例如CONFIG_MMU)中配置的所有定义。其中有很多,所以通常您只关注您真正关心的少数几个。
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/include"
],
"defines": [
"__GNUC__",
"__KERNEL__"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
答案 2 :(得分:0)
从今天开始,我发现vscode-linux-kernel项目的使用优于上面列出的两个答案,因为通过代码和Intellisense进行导航非常好。
该项目已发布到公共领域。
答案 3 :(得分:0)
这是最适合我的方法(修复了a previous answer中的代码段问题):
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/include",
"${workspaceFolder}/arch/<arch>/include" # replace <arch> with actual architecture to build
],
"forcedInclude": [
"${workspaceFolder}/BUILD/include/generated/autoconf.h"
],
"defines": [
"__KERNEL__"
],
"compilerPath": "/usr/bin/gg", # replace this with your compiler (also gcc cross-compiler)
"cStandard": "c11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}