Почему кеш сборок автомобиля go становится недействительным? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть проект рабочего пространства barebones:

.
├── build-debug.sh
├── Cargo.lock
├── Cargo.toml
├── common
│   ├── Cargo.toml
│   └── src
│       └── lib.rs
├── rs-test.iml
├── server
│   ├── Cargo.toml
│   └── src
│       └── main.rs
└── wui
    ├── Cargo.toml
    └── src
        └── lib.rs

Файлы rs либо пустые, либо просто пустая основная функция.

Сервер и wui зависят от общего: common = { path = "../common" }.

У общего проекта есть одна зависимость crates.io с, я полагаю, сценарием сборки или зависимостью макроса pro c.

Сценарий сборки:

cargo build -p wui --target wasm32-unknown-unknown
cargo build -p server

Проблема:

Когда я перестраиваю неизмененный проект, некоторые зависимости wui становятся недействительными / перестраиваются, то же самое для сервера.

Либо:

  • убрать целевой флаг wasm32
  • заменить зависимость простым ящиком без скомпилированных зависимостей времени сборки

Он больше не перестраивает подпроекты.

Это ошибка машины go? Что я могу сделать?

1 Ответ

1 голос
/ 27 марта 2020

Это, вероятно, не машина go ошибка. Скорее всего, здесь происходит то, что ваша зависимость crates.io (вы не упоминаете, что это такое, что могло бы быть полезным) имеет разные зависимости или функции в зависимости от целевой архитектуры. Таким образом, когда вы чередуете создание цели WASM и цели вашего хоста, материал перестраивается.

Возможно, в этом случае было бы лучше прекратить использовать рабочее пространство Car go и построить сервер и wui по отдельности. ; таким образом, у вас будут отдельные каталоги target для сервера и wui, которые занимают дополнительное дисковое пространство и занимают больше времени для неинкрементной компиляции, но не позволяют вам перестраивать эти вещи все время, пока вы создаете оба.

...