2014-05-13 4 views
1

안녕하세요 저는 지정된 그래프 문제를 해결하는 작은 응용 프로그램을 작성 중입니다. goraph의 maxflow 알고리즘 (github.com/gyuho/goraph 참고)을 사용하고 싶지만 프로젝트에 가져 오는 데 문제가 있습니다.언어를 선택하십시오 : 가져 오기를 찾을 수 없습니다 (github 프로젝트)

은 내가 무슨 짓을 : - 나는 (수출 GOPATH = $ 홈/.go)을 내 홈 디렉토리에 .go의 folter을 만들어 내 .bash_profile에에 GOPATH을 추가

  • 그럼 난 "이동이라는 get github.com/gyuho/goraph ". 파일은 ~/.go/src/github.com/gyuho/goraph 아래에 저장됩니다. 또한 .go에는 "bin"및 "pkg"폴더가 있습니다. 내 코드에서

나는 다음을 수행 : 이것은 내 메이크

package flow 

import (
    "encoding/json" 
    "github.com/gyuho/goraph" 
    "log" 
) 

//some func definitions... 

입니다 :

# Go parameters 
GOCMD=go 
GOBUILD=$(GOCMD) build 
GOCLEAN=$(GOCMD) clean 
GOTEST=$(GOCMD) test 
GOFMT=gofmt -w 

# Directories 
SRC=src 
FLOW_SRC=$(SRC)/flow 
ERLANGC_SRC=$(SRC)/erlangc 
LOGGING_SRC=$(SRC)/logging 

# Names and files 
MAKING_OS=$(shell go env GOOS) 
MAKING_ARCH=$(shell go env GOARCH) 
TARGET_NAME=flow 
TARGET_DIR=$(shell pwd)/bin 

# Cross compilation targets 
BIN_DARWIN_AMD64=darwin-amd64 
BIN_LINUX_AMD64=linux-amd64 
BIN_LINUX_386=linux-386 
TARGET_LINUX_AMD64=$(TARGET_DIR)/$(BIN_LINUX_AMD64)/$(TARGET_NAME) 
TARGET_LINUX_386=$(TARGET_DIR)/$(BIN_LINUX_386)/$(TARGET_NAME) 
TARGET_DARWIN_AMD64=$(TARGET_DIR)/$(BIN_DARWIN_AMD64)/$(TARGET_NAME) 
ALL_TARGETS=$(TARGET_LINUX_AMD64) $(TARGET_LINUX_386) $(TARGET_DARWIN_AMD64) 

# Rules 
all: format tests build-darwin-amd64 build-linux-amd64 build-linux-386 

clean: $(ALL_TARGETS) 
     $(GOCLEAN) 
     rm -f $^ 

ci: tests build-linux-amd64 

tests: 
     $(GOTEST) $(FLOW_SRC)/*.go 
     $(GOTEST) $(ERLANGC_SRC)/*.go 

build-darwin-amd64: 
     mkdir -p $(TARGET_DIR)/$(BIN_DARWIN_AMD64) 
     cd src && GOARCH=amd64 GOOS=darwin $(GOBUILD) -o $(TARGET_DARWIN_AMD64) 

build-linux-amd64: 
     mkdir -p $(TARGET_DIR)/$(BIN_LINUX_AMD64) 
     cd src && GOARCH=amd64 GOOS=linux $(GOBUILD) -o $(TARGET_LINUX_AMD64) 

build-linux-386: 
     mkdir -p $(TARGET_DIR)/$(BIN_LINUX_386) 
     cd src && GOARCH=386 GOOS=linux $(GOBUILD) -o $(TARGET_LINUX_386) 

format: 
     $(GOFMT) -d -tabwidth=2 -tabs=false -w -s $(FLOW_SRC)/*.go 
     $(GOFMT) -d -tabwidth=2 -tabs=false -w -s $(ERLANGC_SRC)/*.go 

갈 ENV :

GOARCH="amd64" 
GOBIN="" 
GOCHAR="6" 
GOEXE="" 
GOHOSTARCH="amd64" 
GOHOSTOS="darwin" 
GOOS="darwin" 
GOPATH="/Users/bstoecker/.go/" 
GORACE="" 
GOROOT="/usr/local/Cellar/go/1.2.2/libexec" 
GOTOOLDIR="/usr/local/Cellar/go/1.2.2/libexec/pkg/tool/darwin_amd64" 
TERM="dumb" 
CC="clang" 
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fno-common" 
CXX="clang++" 
CGO_ENABLED="1" 

내가 얻을 다음을 호출 오류 :

gofmt -w -d -tabwidth=2 -tabs=false -w -s src/flow/*.go 
gofmt -w -d -tabwidth=2 -tabs=false -w -s src/erlangc/*.go 
go test src/flow/*.go 
# command-line-arguments 
src/flow/graph_json.go:5: can't find import: "github.com/gyuho/goraph" 
FAIL command-line-arguments [build failed] 
make: *** [tests] Error 2 

누구나 내가 뭘 잘못하고 있다고 생각하니? 지금까지

+0

꽤 이상한 설정입니다. 첫 번째 : 파일이 아닌 패키지에 대해'go test'를 실행합니다. ('go test src/flow/*. go' 대신에'go test flow') 두 번째 :'GOPATH'를 도트 파일로 설정하는 것이 가장 빠릅니다. 소스가'/ Users/bstoecker/.go/src/flow' 아래에 있습니까? 황금률을 기억하십시오. "정확히 GOPATH." 셋째 : 멋진 탭과 공백이있는'gofmt'ing은 귀엽지 않습니다. – Volker

답변

2

Any examplegoraph project에서 가져하지 않는 덕분에 그냥 "github.com/gyuho/goraph".
그들은 해당 응용 프로그램 내에서 특정 패키지를 가져옵니다

예를 들면 : 당신이goraph 내에서 해당 패키지 중 하나를 가져올 수있는 경우

import (
    "fmt" 
    "testing" 

    "github.com/gyuho/goraph/algorithm/bfs" 
    "github.com/gyuho/goraph/graph/gsd" 
    // go test -v github.com/gyuho/goraph/example 
    // go test -v /Users/gyuho/go/src/github.com/gyuho/goraph/example/bfs_test.go 
) 

자체 대신 goraph의 참조하십시오.

+0

도와 주셨습니다. 고마워. – Stoecki

관련 문제