Как собрать и запустить C файлы, которые используют функции math.h в VSCode? - PullRequest
0 голосов
/ 07 марта 2020

Как упомянуто здесь: Неопределенная ссылка на pow () в C, несмотря на включение math.h , я могу создавать C файлы, которые используют функции math.h в Linux Ubuntu только в терминал, поставив -lm в конце gcc -o namefile namefile.c. Но я хочу собрать и запустить C код, который использует math.h специально для VSCode. Как мне это сделать?

1 Ответ

0 голосов
/ 09 марта 2020

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

Допустим, у нас есть этот тест. c файл с математикой .h.

#include <math.h>
#include <stdio.h>

#define PI 3.14159265 //defines the value of PI

/* Calculate the volume of a sphere from a given radius */
double volumeFromRadius(double radius) {
    return (4.0/3.0) * PI * pow(radius,3.0f);
}

int main(void) {
    double radius = 5.1;
    printf("The volume for radius=%.2f is %.2f", radius, volumeFromRadius(radius));
}

Шаг 1 : Создать задач. json file

Это для компиляции / сборки ваших кодов.
Чтобы автоматически создать это:

  1. Откройте файл. c
  2. Откройте палитру команд
  3. Выберите C / C ++: Build и отладка активного файла (добавлено расширением C / C ++)
  4. Выберите ваш компилятор (например, мой gcc-7)

, который автоматически создаст tasks. json file и попытайтесь скомпилировать ваш. c файл, который мы ожидаем потерпеть неудачу, поскольку в нем отсутствует флаг -lm. Итак, отредактируйте содержимое файла . json file:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Compile test.c",
            "type": "shell",
            "command": "/usr/bin/gcc-7",
            "args": [
                "-g",
                "-o",
                "${workspaceFolder}/Q/test.out",
                "${workspaceFolder}/Q/test.c",
                "-lm"
            ]
        }
    ]
}

Здесь я добавил флаг -lm к аргументам gcc и label -ed его как "Проверка компиляции. c". Измените пути к файлам. c и .out в соответствии с вашей средой.

Подробнее о схеме здесь: https://code.visualstudio.com/docs/editor/tasks#_custom -задачи .

Шаг 2 : создание запуска. json file

Это для запуска ваших кодов.
Для автоматического создания этого:

  1. Откройте палитру команд
  2. Выберите Отладка : Открыть запуск. json
  3. Выбрать C ++ (GDB / LLDB)

Затем отредактировать его для запуска ожидаемого файла .out.

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Run test.c",
            "preLaunchTask": "Compile test.c",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/Q/test.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}/Q",
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

Обратите внимание, что preLaunchTask должен указывать одну и ту же метку задачи в задач. json. Опять же, измените пути в соответствии с вашей средой, особенно путь и имя файла для файла .out.

Шаг 3 : скомпилируйте и запустите

Теперь я не используйте (или что-то подобное) Code Runner.
Я использую конфигурацию встроенного отладчика VS Code.

Нажмите на отладчик слева и выберите «Выполнить тест». c "из выпадающего списка.

enter image description here

Это должно скомпилировать ваш файл. c, запустить его и распечатать все выходные данные на панели терминала.

enter image description here

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

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