Кажется, что поведение Cargo по умолчанию при поиске его каталога конфигурации заключается в поиске в домашнем каталоге текущего пользователя (~/.cargo
в моей системе). Как можно изменить это поведение, чтобы вместо этого Cargo искал каталог, указанный пользователем?
Как можно переопределить расположение каталога конфигурации Cargo?
Ответы (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 допускает локальную настройку для конкретного пакета, а также глобальную настройку, например 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_HOME
, она переопределяет расположение по умолчанию, которое равно $HOME/.cargo
.