Visual Studio 配置 远程Linux CMake 项目

发布于:2024-12-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

添加 Linux 配置

配置可用于针对具有相同源代码的不同平台(Windows、WSL、远程系统)。 配置还可用于设置编译器、传递环境变量以及自定义 CMake 的调用方式。 CMakeSettings.json 文件指定在自定义 CMake 设置中列出的部分或所有属性,以及控制远程 Linux 计算机上的生成设置的其他属性。

若要在 Visual Studio 2019 或更高版本中更改默认 CMake 设置,请在主工具栏中打开“配置”下拉列表,然后选择“管理配置” 。

显示“配置”下拉列表中突出显示的 CMake 管理配置的屏幕截图。

此命令将打开“CMake 设置编辑器”,可使用它来编辑根项目文件夹中的 CMakeSettings.json 文件。 还可通过单击“CMake 设置”对话框右上角的“编辑 JSON”按钮,使用 JSON 编辑器打开文件。 

Visual Studio 2019 版本 16.1 中的默认 Linux 调试配置如下所示:

JSON复制

{
  "configurations": [
    {
      "name": "Linux-GCC-Debug",
      "generator": "Ninja",
      "configurationType": "Debug",
      "cmakeExecutable": "cmake",
      "remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [ "linux_x64" ],
      "remoteMachineName": "1234567890;192.168.1.1 (username=root, port=22, authentication=Password)",
      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
      "remoteCopySources": true,
      "rsyncCommandArgs": "-t --delete --delete-excluded",
      "remoteCopyBuildOutput": false,
      "remoteCopySourcesMethod": "rsync",
      "variables": []
    }
  ]
}

在 Visual Studio 2019 版本 16.6 或更高版本中,Ninja 是针对远程系统或 WSL 的配置的默认生成器(而不是 Unix Makefiles)。

选择 Linux 目标

打开 CMake 项目文件夹时,Visual Studio 会分析 CMakeLists.txt 文件,并指定 Windows 目标“x86-Debug”。 要以远程 Linux 系统为目标,请根据 Linux 编译器更改项目设置。 例如,如果在 Linux 上使用 GCC 并使用调试信息进行编译,则选择:“Linux-GCC-Debug”或“Linux-GCC-Release”。

如果指定远程 Linux 目标,则会将源复制到远程系统。

选择目标后,CMake 会在 Linux 系统上自动运行,以便为项目生成 CMake 缓存:

Visual Studio 的屏幕截图,显示了在 Linux 上生成 CMake 缓存的输出。

针对远程项目和 WSL 的 Launch.vs.json 参考

在 Visual Studio 2019 版本 16.6 中,我们添加了一个 type: cppgdb 的新调试配置,用于在远程系统和 WSL 上简化调试。 仍支持 type: cppdbg 的旧调试配置。

配置类型 cppgdb

  • name:用于在“启动项”下拉菜单中标识配置的易记名称。

  • project:指定项目文件的相对路径。 通常,调试 CMake 项目时不需要更改此路径。

  • projectTarget:指定在生成项目时要调用的 CMake 目标。 如果从“调试菜单”或“目标视图”输入 launch.vs.json,则 Visual Studio 会自动填充此属性。 此目标值必须与“启动项”下拉菜单中列出的现有调试目标的名称匹配。

  • debuggerConfiguration:指示要使用的一组调试默认值。 在 Visual Studio 2019 版本 16.6 中,唯一有效的选项是 gdb。 Visual Studio 2019 版本 16.7 或更高版本也支持 gdbserver

  • args:在启动时传递给所调试的程序的命令行自变量。

  • env:传递给所调试的程序的其他环境变量。 例如 {"DISPLAY": "0.0"}

  • processID:要附加到的 Linux 进程 ID。 仅当附加到远程进程时才使用。

gdb 配置的其他选项

  • program:默认为 "${debugInfo.fullTargetPath}"。 要调试的应用程序的 Unix 路径。 仅当与生成或部署位置中的目标可执行文件不同时才需要。

  • remoteMachineName:默认为 "${debugInfo.remoteMachineName}"。 承载要调试的程序的远程系统的名称。 仅当与生成系统不同时才需要。 必须在连接管理器中具有现有条目。 按 Ctrl+空格键可查看所有现有远程连接的列表。

  • cwd:默认为 "${debugInfo.defaultWorkingDirectory}"。 远程系统上运行 program 的目录的 Unix 路径。 目录必须存在。

  • gdbpath:默认为 /usr/bin/gdb。 用于调试的 gdb 的完整 Unix 路径。 仅当使用 gdb 的自定义版本时才需要。

  • preDebugCommand:恰好在调用 gdb 之前运行的 Linux 命令。 gdb 在该命令完成之前不会启动。 可以使用该选项在执行 gdb 之前运行脚本。

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "cppgdb",
      "name": "CMakeLists.txt",
      "project": "CMakeLists.txt",
      "projectTarget": "",
      "comment": "了解如何配置远程调试。有关详细信息,请参阅 http://aka.ms/vslinuxdebug",
      "debuggerConfiguration": "gdb",
      "processId": "0"
    }
  ]
}

 参考链接:

在 Visual Studio 中配置 CMake 调试会话 | Microsoft Learn介绍如何使用 Visual Studio 配置 CMake 调试器设置。icon-default.png?t=O83Ahttps://learn.microsoft.com/zh-cn/cpp/build/configure-cmake-debugging-sessions?view=msvc-170&viewFallbackFrom=vs-2019#launchvsjson-reference-for-remote-projects-and-wsl

在 Visual Studio 中配置 Linux CMake 项目 | Microsoft Learn如何在 Visual Studio 中配置 Linux CMake 设置icon-default.png?t=O83Ahttps://learn.microsoft.com/zh-cn/cpp/linux/cmake-linux-configure?view=msvc-170