Инкрементные сборки не работают с go build, только с go install - PullRequest
1 голос
/ 20 апреля 2019

Я запускаю проект, использующий 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?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...