【问题标题】:VScode remote development: How can I run a build task to source environment variables before running the real build task?VScode 远程开发:如何在运行真正的构建任务之前运行构建任务以获取环境变量?
【发布时间】:2020-03-02 15:04:05
【问题描述】:

我想设置 VScode,以便我可以使用构建任务来构建我的项目。该项目是使用make构建的,我已经定义了一个运行make的构建任务。但是,在运行 make 之前,我通常会获取一个正确设置环境变量的脚本。如果我使用 source 命令添加新的构建任务,并将我的主要构建任务设置为首先执行 source 命令,则环境变量不会正确传播。如何确保在构建任务之间保留环境变量?

我的 tasks.json 文件:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "make",
            "command": "make",
            "args": [],
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "dependsOn": "Set environment"
        },
        {
            "label": "Set environment",
            "type": "shell",
            "command": "source path/to/source_me.sh",
            "group": "build",
   ]
}

【问题讨论】:

    标签: visual-studio-code environment-variables gnu-make


    【解决方案1】:

    不是这样。获取文件是将文件内容注入到当前的 shell 会话中,该会话在任务结束后立即结束。 make 任务在单独的 shell 会话中运行,因此这两个不会交互。您可以尝试执行执行单行的单个任务:source path/to/source_me.sh && make

    【讨论】:

      【解决方案2】:

      我这样解决了我的问题:

      "tasks": [
             {
                 "label": "all",
                 "type": "shell",
                 **"command": "source gitenv.sh && cd ${fileDirname} && alfred all"**,
                 "problemMatcher": [],
                 "group": {
                     "kind": "build",
                     "isDefault": true
                 }
             }
         ]
      

      其中 alfred 是带有额外参数的 make 命令的宏。 ${fileDirname} 返回您打开文件的当前目录。

      所以如果你打开一个文件并且在同一个目录中你有 Makefile 你可以CTRL + SHIFT + B 来执行这个默认任务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-28
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多