为每个vscode项目设置`GOPATH`

时间:2016-11-21 07:58:57

标签: go visual-studio-code

GOPATH变量global设置为环境变量可以正常使用Visual Studio Code。

但是,在全球范围内设置项目特定变量对我来说似乎并不是很好。考虑您有多个Go项目,每次编译,调试......等项目时都必须更改此变量。

是否有可能将GOPATH变量设置为Visual Studio Code中的项目变量?以太settings.jsonlaunch.json

5 个答案:

答案 0 :(得分:12)

(2018年第二季度: 请注意,对于vgo project,最终可能会弃用GOPATH以支持基于项目的工作流。这样可以避免两年前我在下面提出的基于项目的GOPATH手册。

使用Go 1.11(2018年8月),GOPATH can be optional, with modules

VSCode支持越来越多:

除了供应商文件夹,每个项目仍然可以有一个GOPATH

请参阅" GOPATH from go.inferGopath setting":

  来自GOPATH设置的

go.inferGopath      

设置go.inferGopath会覆盖以上所有内容   如果go.inferGopath设置为true,则扩展程序将尝试从工作空间的路径推断出GOPATH,即在vscode中打开的目录。它会在src目录的路径中向上搜索,并将GOPATH设置为高于该值的一个级别。

     

例如,如果您的项目看起来像/aaa/bbb/ccc/src/...,那么打开目录/aaa/bbb/ccc/src(或其下面的任何内容)将导致扩展程序向上搜索,找到src组件中的GOPATH组件。路径,并将GOPATH=/aaa/bbb/ccc设置为高于GOPATH的一个级别。

     

当您处理具有不同GOPATH s的不同Go项目时,此设置很有用。您可以将;/:设置为go.inferGopath,而不是在每个项目的工作空间设置中设置true或将所有路径设置为GOPATH分隔的字符串,而扩展程序使用自动右GOPATH

     

go.toolsGopath使用GOPATH

安装Go工具      

默认情况下,所有依赖的Go工具都来自上述逻辑派生的PATH   如果PATH上有GOPATH,则GOPATH用于查找Go工具   如果Go工具不在您的路径中,您最终可能会在每个go.toolsGopath中安装相同的Go工具。
  要防止Go工具混乱Go: Install Tools,请使用RAMAnimatedTabBarController设置为Go工具提供单独的位置。

     

第一次设置go.toolsGopath时,您必须运行func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { if UserDataSingleton.sharedDataContainer.logged == "logged" { let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "Order") as! RAMAnimatedTabBarController // error here self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.rootViewController = initialViewControlleripad self.window?.makeKeyAndVisible() }else{ let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewController(withIdentifier: "loginViewController") as! loginViewController self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.rootViewController = initialViewControlleripad self.window?.makeKeyAndVisible() } 命令,以便Go工具安装在提供的位置。

答案 1 :(得分:4)

GOPATH是你的工作区,它分为

GOPATH/
    |- bin/
    |- pkg/
    |- src/ <--- your projects are saved here
        |- .../my_project1
        |- .../my_project2

通过这种分离,您不需要为每个项目设置新的GOPATH。我建议你阅读How to Write Go Code

答案 2 :(得分:2)

Go 1.5添加了允许每个项目依赖项管理的供应商目录。

  

如果有源目录d / vendor,则在根据d生成的子树中编译源文件时,导入&#34; p&#34;被解释为import&#34; d / vendor / p&#34;如果该路径命名一个目录,该目录包含至少一个名称以“.go”结尾的文件。

source

默认情况下,此功能已启用Go 1.6:

  

Go 1.5引入了对由环境变量启用的“供应商”目录的实验性支持。在Go 1.6中,默认情况下现在启用该功能。

source

即使使用1.6版本,根据您使用的工具,您可能需要将GO15VENDOREXPERIMENT环境变量设置为1(基于unix的操作系统上的export GO15VENDOREXPERIMENT=1

答案 3 :(得分:1)

在Windows中

设置workspace settings

  1. 转到设置:ctrl+,
  2. 设置工作区设置:

    { 
         "go.gopath": "d:\\gopath;E:\\src"
    }
    

;用于多路径

  1. 重新启动Visual Studio代码以使其生效。

答案 4 :(得分:0)

如果您的VSCode项目目录是有组织的,

  1. 转到“设置”
  2. 搜索“推断Gopath”或在Extensions / Go下找到此条目
  3. 选中复选框

然后VSCode从您的工作区根目录推断出GOPATH,这立即解决了我的问题。我相信这在其他答案中得到了解释。我发布这个只是为了给出一个简短的版本。