Как установить переменную env cgo перед кодом запуска vscode?

У меня есть код Голанга, например:


import (
    "github.com/bobertlo/go-mpg123/mpg123"
)

func main() {
    ...
}

Из терминала, чтобы построить этот код. Я должен установить ниже переменную env:

export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/homebrew/Cellar/mpg123/1.32.3/include 
export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/Cellar/mpg123/1.32.3/lib

Теперь я хочу построить с использованием vscode. Я настраиваю launch.json, Tasks.json ниже:

// launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Package",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "preLaunchTask": "Set CGO_CFLAGS",
            "program": "${fileDirname}"
        }
    ]
}
// tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Set C_INCLUDE_PATH",
            "type": "shell",
            "command": "export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/homebrew/Cellar/mpg123/1.32.3/include",
            "problemMatcher": []
        },
        {
            "label": "Set LIBRARY_PATH",
            "type": "shell",
            "command": "export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/Cellar/mpg123/1.32.3/lib",
        },
        {
            "label": "Set CGO_CFLAGS",
            "type": "shell",
            "dependsOn":["Set C_INCLUDE_PATH", "Set LIBRARY_PATH"],
            "dependsOrder": "sequence",
        },
    ]
}

Но это не сработало. Сообщается:

Build Error: go build -o /Users/xxx/Projects/portauio-go/examples/__debug_bin2329559837 -gcflags all=-N -l .
# github.com/bobertlo/go-mpg123/mpg123
../../../../go/pkg/mod/github.com/bobertlo/[email protected]/mpg123/mpg123.go:8:10: fatal error: 'mpg123.h' file not found
#include <mpg123.h>
         ^~~~~~~~~~
1 error generated. (exit status 1)

Как я могу заставить это работать?

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
1
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Могут ли ${env:ENV_VAR}ссылки на переменные быть тем, что вы ищете? Это зависит от рабочего пространства.

Однако есть специальные настройки для расширения go.

Ответ принят как подходящий

Я полагаю, это потому, что тип задачи был установлен на «оболочка». Это означает, что он будет выполняться в другой оболочке, и установленный им env не вступит в силу в текущей оболочке.

В launch.json я добавил env вот так, и теперь это работает:

{
    "name": "Launch mp3.go",
    "type": "go",
    "request": "launch",
    "mode": "auto",
    "program": "examples/mp3.go",
    "args": ["sample-12s.mp3"],
    "env": {
        "CPATH": "${CPATH}:/opt/homebrew/Cellar/mpg123/1.32.3/include",
        "LIBRARY_PATH": "${LIBRARY_PATH}:/opt/homebrew/Cellar/mpg123/1.32.3/lib"
    }
},

Другие вопросы по теме