在launch.json args字段

时间:2018-02-09 15:25:15

标签: json visual-studio

我目前正在尝试在Visual Studio Community 2017中为基于CMake的项目设置调试启动参数。通常,这将通过launch.vs.json文件完成。但是,我需要传递的参数中包含空格。例如,下面的launch.vs.json文件应该将arguemnts FIRST ARGUMENT和SECOND ARGUMENT作为第一个和第二个参数传递。但是,该程序最终得到4个参数:FIRST,ARGUMENT,SECOND和ARGUMENT。我已尝试过各种不同的空格编码,但无法在结果参数中获得正确编码的空间。这是特别有问题的,因为我的程序的一个参数是C:\ Program Files中的路径。因此,路径被分为两个单独的参数,而不是应该是一个。如何让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)

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

通过Visual Studio本身更容易实现。要使用命令行参数运行程序,请执行以下步骤:

  1. 在Visual Studio中打开项目
  2. 点击&#39;调试&#39;菜单栏中的标签。
  3. 点击&#39; [项目名称]属性&#39;菜单项。
  4. 将弹出一个窗口,该窗口应自动进入该窗口中的Debug菜单。在“开始”选项下&#39; section输入命令行参数,每个参数之间有一个空格。
  5. 希望这有帮助。

相关问题