Как можно переопределить расположение каталога конфигурации Cargo?

Кажется, что поведение Cargo по умолчанию при поиске его каталога конфигурации заключается в поиске в домашнем каталоге текущего пользователя (~/.cargo в моей системе). Как можно изменить это поведение, чтобы вместо этого Cargo искал каталог, указанный пользователем?


person Doe    schedule 27.06.2016    source источник


Ответы (2)


Переменные среды Cargo читает

Вы можете переопределить эти переменные среды, чтобы изменить поведение Cargo в вашей системе:

  • CARGO_HOME — Cargo поддерживает локальный кеш индекса реестра и git checkouts ящиков. По умолчанию они хранятся в $HOME/.cargo, но эта переменная переопределяет расположение этого каталога. Как только крейт кэшируется, он не удаляется командой clean.
  • CARGO_TARGET_DIR — Место для размещения всех сгенерированных артефактов относительно текущего рабочего каталога.
  • RUSTC — вместо запуска rustc Cargo выполнит указанный компилятор.
  • RUSTC_WRAPPER — вместо простого запуска rustc Cargo выполнит указанную оболочку, передав в качестве аргументов командной строки вызов rustc, причем первым аргументом будет rustc.
  • RUSTDOC — Вместо запуска rustdoc Cargo выполнит указанный экземпляр rustdoc.
  • RUSTDOCFLAGS — список пользовательских флагов, разделенных пробелами, для передачи всем вызовам rustdoc, которые выполняет Cargo. В отличие от cargo rustdoc, это полезно для передачи флага всем экземплярам rustdoc.
  • RUSTFLAGS — Список настраиваемых флагов, разделенных пробелами, для передачи всем вызовам компилятора, которые выполняет Cargo. В отличие от cargo rustc, это полезно для передачи флага всем экземплярам компилятора.
  • CARGO_INCREMENTAL — если установлено значение 1, то Cargo принудительно включит инкрементную компиляцию для текущей компиляции, а если установлено значение 0, принудительно отключит ее. Если эта env var отсутствует, в противном случае будут использоваться значения по умолчанию для груза.
  • CARGO_CACHE_RUSTC_INFO — если установлено значение 0, то Cargo не будет пытаться кэшировать информацию о версии компилятора.

Документация Cargo


Иерархическая структура

Cargo допускает локальную настройку для конкретного пакета, а также глобальную настройку, например git. Cargo расширяет это до иерархической стратегии. Если, например, Cargo был вызван в /projects/foo/bar/baz, то следующие файлы конфигурации будут проверены и объединены в следующем порядке:

  • /projects/foo/bar/baz/.cargo/config
  • /projects/foo/bar/.cargo/config
  • /projects/foo/.cargo/config
  • /projects/.cargo/config
  • /.cargo/config
  • $HOME/.cargo/config

С помощью этой структуры вы можете указать конфигурацию для каждого пакета и даже, возможно, проверить ее в системе контроля версий. Вы также можете указать личные значения по умолчанию с помощью файла конфигурации в вашем домашнем каталоге.

Документация Cargo

person aSpex    schedule 27.06.2016
comment
+1 за упоминание файлов конфигурации; проверка конфигурации в проекте очень полезна для участников! - person Matthieu M.; 27.06.2016

Расположение по умолчанию можно изменить с помощью переменной среды $CARGO_HOME, она переопределяет расположение по умолчанию, которое равно $HOME/.cargo.

person Andrew Lygin    schedule 27.06.2016