Я запускаю проект, использующий Go Modules с 1.11.4 на Ubuntu, работающий в WSL.
Моя проблема в том, что я получаю инкрементные сборки, чтобы работать так, как я ожидаю. Возможно, это из-за того, что я неправильно понял, как это должно быть, но я был бы рад, если бы кто-то мог уточнить, так ли это.
В качестве примера, если я сделаю go build ./...
, то все будет построено, как и ожидалось.
Если я теперь снова выполню go build ./...
без каких-либо изменений, я ожидал, что из-за дополнительных сборок на этот раз ничего не будет построено. Но он строит все снова. Я пытался сделать go build -i ./...
(хотя я понимаю, что -i больше не нужен с 1.10), но результат тот же. Это озадачивало меня некоторое время, так как после прочтения документации я действительно ожидал, что команда go build
будет производить инкрементные сборки.
На днях я понял, что если вместо этого я сначала выполню go install ./...
, а затем go install ./...
снова во второй раз, во второй раз ничего не будет построено, как я и ожидал. Если я заменим один модуль и снова запусту go install ./...
, то только , этот модуль будет перестроен, что я и ожидал. Так что это дает мне дополнительные сборки.
Так что мои вопросы
1) Я неправильно понял go build ./...
и как он обрабатывает инкрементные сборки? Нужно ли использовать go install
вместо этого?
2) Как правило, мы строим модули один за другим, используя флаг -o
, чтобы указать выходной путь. При использовании go install
вместо -o
опция для указания пути вывода. Могу ли я сделать что-то похожее на -o
, используя go install
?
Спасибо!