Как установить переменную из задачи Visual Studio Code? - PullRequest
0 голосов
/ 19 октября 2019

В Visual Studio.net у вас есть всплывающее меню, которое позволяет вам выбрать текущую конфигурацию сборки, а затем в ваших скриптах (make-файлах) вы можете использовать $ (Configuration) для выбора таких вещей, как сборка g ++ -g против g ++ -Oи т. д.

Я хотел бы сделать то же самое в коде Visual Studio и немного приблизился, но без сигары.

Я думаю, что мой первый шаг - найти хороший способ установить и прочитать конфигурациюпеременные. Я обнаружил, что могу писать задачи, которые читают и пишут файлы (которые эффективно дают желаемую способность), но это довольно медленно. И похоже, что использование предопределенных переменных $ {config: xxxx} должно делать примерно то, что я хочу, но только если я могу их установить (что я не смог сделать).

Итак - мойвопрос - из задачи Visual Studio Code - как мне «установить» переменную в контексте задачи?

Вот пример того, что я пробовал:

{
"version": "2.0.0",
"tasks": [
    {
        "isBackground": true,
        "label": "make CURRENT-CONFIGURATION",
        "type": "shell",
        "command": "make",
        "args": [
            "CONFIGURATION=${input:CURRENT-CONFIGURATION}",
            "${input:make-targets}",
            "-j4"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            "clear": true,
            "panel": "dedicated"
        },
        "problemMatcher": [
            "$msCompile"
        ]
    },
    {
        "label": "make rebuild CURRENT-CONFIGURATION",
        "type": "shell",
        "command": "make CONFIGURATION=${input:CURRENT-CONFIGURATION} --directory ${input:DIRECTORY} clean && make CONFIGURATION=${input:CURRENT-CONFIGURATION} --directory ${input:DIRECTORY}  all -j4",
        "problemMatcher": [
            "$msCompile"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
    },
    {
        "isBackground": true,
        "label": "make CONFIGURATION",
        "type": "shell",
        "command": "make",
        "args": [
            "CONFIGURATION=${input:CONFIGURATION}",
            "--directory", "${input:DIRECTORY}",
            "${input:make-targets}",
            "-j4"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            "clear": true,
            "panel": "dedicated"
        },
        "problemMatcher": [
            "$msCompile"
        ]
    },
    {
        "isBackground": true,
        "label": "Set CURRENT-CONFIGURATION",
        "type": "shell",
        "command": "echo ${input:CONFIGURATION} > ${workspaceFolder}/CURRENT-CONFIGURATION"
    },
    {
        "label": "make rebuild CONFIGURATION",
        "type": "shell",
        "command": "make CONFIGURATION=${input:CONFIGURATION} --no-print-directory --directory ${input:DIRECTORY} clean && make CONFIGURATION=${input:CONFIGURATION} --no-print-directory --directory ${input:DIRECTORY}  all -j4",
        "problemMatcher": [
            "$msCompile"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            "clear": true,
            "panel": "dedicated"
        }
    },
    {
        "isBackground": true,
        "label": "make clean",
        "type": "shell",
        "command": "make",
        "args": [
            "CONFIGURATION=${input:CONFIGURATION}",
            "--directory", "${input:DIRECTORY}",
            "clean"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            "clear": true,
            "panel": "dedicated"
        }
    },
    {
        "isBackground": true,
        "label": "make clobber",
        "type": "shell",
        "command": "make",
        "args": [
            "CONFIGURATION=${input:CONFIGURATION}",
            "--directory", "${input:DIRECTORY}",
            "clobber"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            "clear": true,
            "panel": "dedicated"
        }
    }
],
"inputs": [
    {
        "id": "CONFIGURATION",
        "description": "configuration name?",
        "default": "Debug-U-32",
        "type": "pickString",
        "options": [
            "",
            "Debug-U-32",
            "Debug-U-64",
            "Release-U-32",
            "Release-U-64",
        ]
    },
    {
        "id": "DIRECTORY",
        "description": "directory?",
        "default": ".",
        "type": "pickString",
        "options": [
            "",
            ".",
            "libraries",
            "samples",
            "tests",
        ]
    },
    {
        "id": "make-targets",
        "description": "typically all, clean, clobber, libraries, tests, run-tests, etc.",
        "default": "all",
        "type": "promptString"
    },
    {
        "id": "CURRENT-CONFIGURATION",
        "type": "command",
        "command" : "cat ${workspaceFolder}/CURRENT-CONFIGURATION"
    }
]

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...