많은 공유 패키지가 포함 된 상당히 큰 시스템에 참여할 Go 패키지를 작성했습니다. 나는 컴파일러가 -I 플래그로 호출되는 자사의 메이크는 작성하여 컴파일을 얻을 수있었습니다 :gotest 통과 컴파일러 플래그를 만들 수 있습니까?
include $(GOROOT)/src/Make.inc
TARG=foobar
GOFILES=\
foobar.go\
foobar:
$(GC) -I$(CURDIR)/../intmath -I$(CURDIR)/../randnum foobar.go
include $(GOROOT)/src/Make.pkg
그것은 잘 컴파일하고 착한 아이되고, 내가 시험의 종합을 썼다. 나는 intmath 및 randnum 패키지를 어디서 찾을 수 있는지를 이야기하는 -I
플래그를 사용할 때
$ gotest
rm -f _test/foobar.a
8g -o _gotest_.8 foobar.go foobar_test.go
foobar.go:4: can't find import: intmath
make: *** [_gotest_.8] Error 1
gotest: "C:\\msys\\bin\\sh.exe -c \"gomake\" \"testpackage\" \"GOTESTFILES=foobar_test.go\"" failed: exit status 2
그래서, 이동이 컴파일 자체 파일 : 나는 gotest
으로 테스트를 실행하려고 할 때, 나는 컴파일 오류가 , 그러나 gotest
은 Makefile을 사용하지 않는 것 같습니다.
는 peterSO의 질문에 대답 :
import (
"intmath"
"randnum"
"container/vector"
)
을 그리고 컴파일러에가는 -I
플래그를 가지고 컴파일은 오랫동안 잘 작동 : foobar.go의 수입 부분은 다음과 같습니다. 나는 다음과 같이 상대 경로를 사용하려고 시도했다.
그러나 작동하지 않는 것 같다.
편집 : 대답 더 peterSO 질문은 : - 내 소스 코드를 제외하고 -
GOROOT은 C:\Go
에 내가 가서 물건을 모두 가지고있는 디렉토리를 설정 설치했습니다. 상대 경로가 원본 파일이있는 디렉터리에 상대적이라고 예상했습니다.
내 소스 트리는 다음과 같습니다 : 그래서
server/
foobar/
randnum/
intmath/
, 내가 다른, 더 이동 - 관용적 디렉토리 구조에 열려 있는데도, 내 본능은 동료로 배열하는 것입니다.
gotest
을 필요한 플래그가있는 foobar.go를 컴파일 할 수있게 해주는 방법이 있습니까?
import 문에서 패키지 경로를 지정하려고했지만 작동시키지 못했습니다. 세부 사항은 위의 내 대답에 추가됩니다. 그 문제가 있다면 Windows 7에서 개발 중입니다. –
두 번째 유용한 질문에 답변했습니다. 분명히, 나는'..'이'$ GOROOT/src'와 관련이 있다는 것을 모르고 있었지만 소스 코드가 존재하는 디렉토리와 관련이 있습니다. 저와 위의 디렉토리에서 가져 오기를 지정할 수있는 방법이 있습니까? –
GOROOT가 내 응용 프로그램 디렉토리 구조를 가리 키도록 변경하면 GO 표준 라이브러리 패키지에 액세스 할 수 없게됩니까? 그렇다면 표준 Go 디렉토리 구조에 내 패키지를 설치해야합니까? –