【问题标题】:Visual Studio Community 2017 spaces in launch.json args fieldlaunch.json args 字段中的 Visual Studio Community 2017 空间
【发布时间】:2018-02-09 15:25:14
【问题描述】:

我目前正在尝试在 Visual Studio Community 2017 中为基于 CMake 的项目设置调试启动参数。通常这将通过 launch.vs.json 文件完成。但是,我需要传递的参数中包含空格。例如,下面的 launch.vs.json 文件应该传递参数 FIRST ARGUMENT 和 SECOND ARGUMENT 作为第一个和第二个参数。然而,程序最终得到 4 个参数:FIRST、ARGUMENT、SECOND 和 ARGUMENT。我尝试了各种不同的空格编码,但无法在结果参数中正确编码空格。这尤其成问题,因为我的程序的参数之一是 C:\Program Files 中的路径。因此,路径被分成 2 个单独的参数,而不是应该的一个。如何让 Visual Studio 允许参数中包含空格?

作为参考,使用此命令通过命令行启动按预期工作:

argtest.exe "FIRST ARGUMENT" "SECOND ARGUMENT"

launch.vs.json

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "argtest.exe",
      "name": "argtest.exe",
      "args": ["FIRST ARGUMENT", "SECOND ARGUMENT"]
    }
  ]
}

test.c

#include <stdio.h>
int main(int argc, char ** argv) {
    int i;
    for (i = 0; i < argc; i++)
        printf("%d = %s\n", i, argv[i]);
    return 0;
}

CMakeLists.txt

cmake_minimum_required (VERSION 2.8.8)
project (argtest)
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/ )
add_executable(argtest test.c)

【问题讨论】:

    标签: json visual-studio


    【解决方案1】:

    您需要在 args 字符串中包含引号并将其转义。例如:

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "CMakeLists.txt",
          "projectTarget": "argtest.exe",
          "name": "argtest.exe",
          "args": ["\"FIRST ARGUMENT\"", "\"SECOND ARGUMENT\""]
        }
      ]
    }
    

    【讨论】:

      【解决方案2】:

      通过 Visual Studio 本身更容易做到这一点。要使用命令行参数运行程序,请按以下步骤操作:

      1. 在 Visual Studio 中打开项目
      2. 单击菜单栏中的“调试”选项卡。
      3. 单击“[项目名称] 属性”菜单项。
      4. 将弹出一个窗口,并应自动进入该窗口内的“调试”菜单。在“开始选项”部分下输入您的命令行参数,每个参数之间有一个空格。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 2017-08-13
        • 1970-01-01
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        相关资源
        最近更新 更多