Как создать и запустить код C ++ в коде Visual Studio?

У меня есть { "version" : "0.1.0" , "command" : "gcc" , "isShellCommand" : true , "args" : [ "-Wall" , "$ {relativeFile}" , "-o" , " "$ {relativeFile} .exe" , "-pedantic" ], "echoCommand" : true , "showOutput" : "always" , "problemMatcher" : { "owner" : "cpp" , "fileLocation" : [ "relative" , "$ {workspaceRoot}" ], "pattern" : { "regexp" : "^ (. *): (\ d +): (\ d +): \ s + (предупреждение | ошибка): \ s + (. *) $ " , " file " : 1 , " line " : 2 , " column " : 3 , " severity " : 4 , " message " : 5 } } } скрипт, который в настоящее время компилирует код

tasks.json

Это работает нормально, но когда я хочу запустить файл, мне нужно запустить exe из командной строки. Возможно ли это сделать и в задаче? Так что, если это «команда» успешно завершает работу, тогда выполняется другая задача?

c++,visual-studio-code,

3

Ответов: 1


7 принят

Вы можете настроить несколько задач в Visual Studio Code, один из которых позволит вам создать исполняемый файл, а другой выполнит ваш исполняемый файл.

Кроме того, вы также можете посмотреть «Режим запуска» Visual Studio Code (см. Здесь ). Если вы используете «Режим запуска», вы должны иметь возможность настроить код Visual Studio для создания своего исполняемого файла, а затем запустить его.

Я не очень знаком с «Run Mode», поэтому я подробно расскажу, как определить несколько задач для достижения аналогичного результата.


Отказ от ответственности: код Visual Studio не поддерживает задачи, которые используют разные команды оболочки (см. Здесь ).

Это верно. В текущем состоянии Visual Studio Code не имеет «родной» поддержки для определения задач, которые используют разные команды оболочки.

Отказ от ответственности: область задач-вывода Visual Studio не позволит вам вводить ввод в вашу программу в интерактивном режиме.

Если ваша программа использует пользовательский ввод (например, из stdin), вам, вероятно, лучше не использовать Visual Studio Code для запуска исполняемого файла .


В принципе, нам нужно будет выполнить две задачи, одна из которых будет задачей сборки, другая - нашей задачей запуска.

Видя , как Visual Studio код не имеет большую поддержку для определения нескольких задач , которые каждый используют различные команды оболочки, мы должны изменить наше cmd«ы shсвойства "args"(или sh, если на Linux / MacOS). Нам также нужно будет установить [/C]свойство [-c]( если на Linux / macOS).{ "taskName": "build", "args": ["gcc", "-Wall", "${relativeFile}", "-o", "${relativeFile}.exe", "-pedantic"] }

Причина, по которой мы это делаем, заключается в том, что мы хотим, чтобы каждая из задач, которые мы собираемся определить, должна быть передана в качестве аргументов для нового экземпляра оболочки.

Следующим шагом является определение задач сборки и запуска. Когда мы это сделаем, нам нужно убедиться, что мы поместим команду, которую хотим запустить, в качестве аргумента задачи. Например:

"isBuildCommand"

Наконец, что мы сделаем, добавим trueсвойство в нашу задачу сборки (и убедитесь, что оно есть "isTestCommand"), а также добавим trueсвойство в нашу задачу запуска (и, опять же, убедитесь, что это так tasks.json).

После всего этого наш tasks.jsonфайл может выглядеть примерно так:

{
    "version": "0.1.0",
    "command": "cmd",
    "args": ["/C"],
    "isShellCommand": true,
    "showOutput": "always",
    "suppressTaskName": true,
    "tasks": [
        {
            "taskName": "build",
            "args": ["gcc", "-Wall", "${relativeFile}", "-o", "${relativeFile}.exe", "-pedantic"],
            "isBuildCommand": true
        },
        {
            "taskName": "run",
            "args": ["${relativeFile}.exe"],
            "isTestCommand": true
        }
    ]
}

Примечание . Если размещение каждого аргумента задачи в своей строке в argsмассиве не работает, вы также можете попробовать разместить все аргументы в одной строке argsмассива. Пример:

["gcc -Wall ${relativeFile} -o ${relativeFile}.exe -pedantic"]

Примечание . Если вы хотите использовать вызовы с помощью сочетаний клавиш, у вас есть команды редактора "workbench.action.tasks.build"и "workbench.action.tasks.test"редактора.

Если вам нужен пример привязки ключей к этим командам, вот пример того, как я их сопоставил в моем keybindings.jsonфайле:

[
    {
        "key": "f6",
        "command": "workbench.action.tasks.build"
    },
    {
        "key": "f7",
        "command": "workbench.action.tasks.test"
    }
}

Изменить . Вероятно, вам нужно всего лишь определить комбинацию клавиш для тестовой задачи, так как задача сборки, вероятно, уже определена. Проверьте здесь, прежде чем тратить время, чтобы определить другую комбинацию клавиш.

C ++, визуально-студия-код,
Похожие вопросы