VSCode C++ c_cpp_properties.json "defines" 没有定义 ubuntu 上的符号



我有一个main.cpp,因此:

#include <stdio.h>
int main(){
#if defined(_LINDEBUG)
#if defined(VSCODE)
printf("VSCODE defined"n);
#else
printf("VSCODE not definedn");
#endif
#endif
}

我在.vscode/文件夹中的c_cpp_properties.json文件是这样的:

{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${default}"
],
"defines": ["VSCODE"],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
}

我通过make编译并链接它,因此:

g++ -fno-common -fPIC -fno-strict-aliasing -fexceptions -fopenmp   -c -g -D_LINDEBUG -std=c++14 -MMD -MP -MF "build/Debug/GNU-Linux/_ext/511e4115/main.o.d" -o build/Debug/GNU-Linux/_ext/511e4115/main.o ../src/main.cpp
mkdir -p dist/Debug/GNU-Linux
g++ -fno-common -fPIC -fno-strict-aliasing -fexceptions -fopenmp    -o dist/Debug/GNU-Linux/linux build/Debug/GNU-Linux/_ext/511e4115/main.o  -lm -lpthread -ldl

我期望通过.json文件定义VSCODE。通过CCD_ 8编译将CCD_ 7定义为CCD_。净效果是输出为:

CCD_ 10。

有没有办法通过c_cpp_properties.json文件而不是通过make参数来定义一些宏?


tasks.json是:

{
"label": "lindbgbuild",
"type": "shell",
"command": "make",
"args": [
"CONF=Debug",
"-C",
"./.vscode"
],
"group": "build",
"problemMatcher": []
}

Makefile.vscode文件夹中退出,该文件夹调用包含实际g++ ...命令的Makefile-Debug.mk

根据文档[link]:

definesIntelliSense引擎的预处理器定义列表在分析文件时使用。(可选(使用=为示例VERSION=1。

因此,为了帮助Intellisense引擎,您似乎只会在那里添加一些定义。一些快速测试无法从c_cpp_properties.json文件中获取要嵌入到代码中的定义。我的猜测是,当您的机器上只有项目的一部分时,存在帮助编写代码的选项。

就其价值而言,您并不是通过make定义_LINDEBUG。它是一个编译器标志[link]。更具体地说,它将任何名称定义为宏,并赋予其值1。该文件没有说明这些定义的位置。

如果你粘贴的是你的makefile的内容,你最好学会创建一个合适的makefile,或者把它提升到一个水平,学会使用cmake这样的构建工具。

编辑:根据您的评论,如果您希望VS代码定义参数,只需将其添加到构建任务中即可。

相关内容

  • 没有找到相关文章

最新更新