$ {relativeFileDirname} не разрешается в tasks.json

#visual-studio-code #vscode-settings #vscode-tasks

#visual-studio-code #vscode-задачи

Вопрос:

Вот мой tasks.json для справки:

 {
  "version": "2.0.0",
  "tasks": [
    {
      "type": "cppbuild",
      "label": "build active file with debug",
      "command": "/usr/bin/g  ",
      "args": [
        "${file}",
        "-o",
        "${workspaceFolder}/out/${relativeFileDirname}.out",
        "-g"
      ],
      "problemMatcher": ["$gcc"],
      "group": "build",
      "detail": "compiler: /usr/bin/g  "
    },
  ]
}
  

Вот видео, демонстрирующее результат: https://imgur.com/a/tvurtX1

В видео я компилирую файл 12-how-to-debug-effectively/main.cpp , и, согласно моему tasks.json , выходной файл должен быть out/12-how-to-debug-effectively.out , но по какой-то причине подстановка переменных не работает, и я вместо этого получаю out/.out .

Любые указатели, где я могу ошибаться?

Комментарии:

1. какова полная команда в терминале, которая имеет g

2. Я не знаю, что вы имеете в виду, но which g дает /usr/bin/g

3. с помощью just /usr/bin/g вы не сможете скомпилировать программу

4. Пожалуйста, скажите мне, что мне нужно сделать тогда.

5. используйте простую echo задачу и выясните, какие переменные работают, когда ваш редактор является файлом cpp code.visualstudio.com/docs/editor /…

Ответ №1:

cppbuild недопустимое значение для type аргумента.

Все примеры на сайте VSC doc используют "type": "shell"

При использовании "type": "shell" я вижу команду, которая должна быть выполнена, и переменные заполнены правильно. (Я использовал подкаталог из 1 слова mysite )

Используя "type": "cppbuild" , я не вижу, какая команда выполняется.