В 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"
}
]
}