首页 > 解决方案 > Visual Studio CMake 项目和 WSL 中的源同步

问题描述

我有一个很大的解决方案,其中一部分项目是经典的 Visual C++ 项目,另一部分是 CMake 类型的项目。以前我在虚拟机上使用 Windows 7 + VS 2017 + Ubuntu,在开始为 linux 构建 CMake 项目之前,VS 启动 rsync 用于 PC 和虚拟机之间的同步源。为此,我在 CMakeSettings.json 文件中创建了下一条规则:

{
  "name": "Linux-Debug",
  "generator": "Unix Makefiles",
  "remoteMachineName": "${defaultRemoteMachineName}",
  "configurationType": "Debug",
  "remoteCMakeListsRoot": "/var/tmp/src/Solution_dir/",
  "cmakeExecutable": "/usr/bin/cmake",
  "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
  "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
  "remoteBuildRoot": "/var/tmp/Solution_dir/build/x86_64_debug_unix",
  "remoteInstallRoot": "/var/tmp/Solution_dir/install/x86_64_release_unix",
  "remoteCopySources": true,
  "remoteCopySourcesOutputVerbosity": "Normal",
  "remoteCopySourcesConcurrentCopies": "10",
  "remoteCopySourcesMethod": "rsync",
  "remoteCopyBuildOutput": false,
  "cmakeCommandArgs": "",
  "buildCommandArgs": "",
  "ctestCommandArgs": "",
  "inheritEnvironments": [ "linux_x64" ],
  "remoteCopySourcesExclusionList": [ "Debug", "Release", ".intermediate", ".vs", "Setup" ]
}

现在我已经安装了 Windows 10 Pro 和 WSL。默认情况下,WSL 已经挂载了我的本地驱动器(如 /mnt/c、/mnt/d),我认为复制源代码文件夹没有任何意义。但是,如果我将remoteCMakeListsRoot属性更改为“/mnt/d/Solution_dir”,VS 将启动 rsync,这将删除我的 .git 文件夹和remoteCopySourcesExclusionList属性中的所有文件夹。如果我要从 CMakeSettings.json 中删除remoteCopySourcesExclusionList属性,rsync 无论如何都会删除 .git 文件夹。

从 Visual Studio 使用 WSL 的真正方法是什么?我怎么能对 VS 说不需要启动 rsync?

标签: c++visual-studiocmakewindows-subsystem-for-linux

解决方案


推荐阅读