使用 VS Code 和 CMake 工具运行自定义命令

Tou*_*dou 7 c++ cmake mpi visual-studio-code

我正在使用带有 CMake Tools 扩展的 VS Code,我想运行一个简单的 MPI 程序。一切都编译得很好,我可以在终端中运行我的代码

mpiexec -n 6 "path-to-my-workspace\build\my-executable.exe"
Run Code Online (Sandbox Code Playgroud)

但是,我想进行设置,以便在我按 Control + Shift + P >“CMake:Run without Debugging”(或 Shift F5)时自动执行。

我在CMake 工具文档中读到我可以在 launch.json 文件中创建新的启动目标。但是,VS Code 文档指出

launch.json 文件用于在 Visual Studio Code 中配置调试器。

我想要这个用于调试,但也用于发布。我还应该使用 launch.json 文件吗?过去,当我需要将参数传递给主函数时,我遇到了同样的问题。使用 CMake 工具在 VS Code 中执行此操作的正确方法是什么?

sta*_*all 0

这听起来像是两个与术语相关的混乱案例。

  1. 在 VS Code 中,有“运行代码”和“不调试运行”的操作。您可以在这个问题中找到有关两者之间区别的更多信息。简而言之,“运行代码”在调试器程序(如 gdb)中运行程序,“运行而不调试”也运行该程序,但不在调试器程序中运行它。

  2. 两种最常见的构建模式是“调试”和“发布”,其中调试包含启用在调试器中运行的调试符号,而发布则不包含调试符号,而是通过更多优化进行构建。VS Code 可以运行两种类型的构建而无需调试,并且可以在调试器中运行调试构建。对于发布版本,它只能在调试器之外运行。

您指定您只关心在调试器之外运行。

要回答您的问题“我还应该使用 launch.json 文件吗? ”,是的,您仍然可以使用 launch.json 文件。

对于使用调试器运行,请注意,您可以使用设置,它将与 CMake 工具为调试目标提供cmake.debugConfig功能集成。

请注意

提示:“运行”操作始终可用,但并非所有调试器扩展都支持“运行”。在这种情况下,“运行”将与“调试”相同。

另请注意:如果您想要运行的程序不是项目的构建输出,那么您可能希望使用tasks.json.

如果您喜欢文档,请参阅https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/debug-launch.md