【发布时间】:2020-03-06 02:30:13
【问题描述】:
在 Ubuntu 18.04 上使用 Visual Studio Code 1.39.2。我的 C++ 程序具有使用命令cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=Debug .. 使用 Cmake 生成 Makefile 的任务。有一个等效的Release 版本。
此后,运行make 任务,该任务在./PROJECT/build/Debug 或./PROJECT/build/Release 文件夹中正确构建DEBUG 和RELEASE 版本。
问题在于 Visual Studio Code 不理解任何 Debug 或 _DEBUG 符号,因此如下代码无法按预期工作:
#ifdef _DEBUG // or #ifdef Debug
cout << "Debug build\n";
#else
cout << "Release build\n";
#endif
当应用程序运行时,只打印Release build,从不打印Debug build。此外,在 Visual Studio Code 编辑器中,Debug build 行是灰色的。
可以选择使用#define DEBUG 手动定义符号,但每次更改构建类型时都需要手动编辑文件。
如何让 Visual Studio Code 根据选定的构建任务定义和理解正确的符号?或者是否有一些巧妙的方法让 Code “查看”生成的 CMake/make 文件(例如 CMakeCache.txt、cmake_install.cmake、Makefile)?
【问题讨论】:
-
cmake是一个命令行实用程序,仅由 VS Code 触发。它在命令行中是否按预期工作?如果没有,您可以从此问题中删除对 VS Code 的所有引用,以稍微缩小范围。 -
不是重复的。另一个问题既与 Visual Studio Code 无关,也与 CMake 3.13 无关(提到的命令显然已过时),它们也不起作用。
-
_DEBUG和相关符号通常在命令行 (/D_DEBUG) 上传递给编译器。 -
@1201ProgramAlarm:你知道如何让 Visual Studio Code 了解定义吗?
标签: c++ debugging visual-studio-code cmake