Как я могу при желании передать флаги rustc в зависимости от функции Cargo? - PullRequest
0 голосов
/ 03 июня 2018

Программа, которую я пишу, работает намного быстрее, когда флаг -C target-cpu=native передается rustc.Я хочу предоставить пользователям простой, независимый от платформы способ включить это при компиляции, поэтому я добавил функцию Cargo cpu_native = [] в Cargo.toml и создал конфигурацию Cargo в своем проекте:

[target.'cfg(cpu_native)']
rustflags = ["-C", "target-cpu=native"]

Однако, это не влияет на мою программу, и передача --features cpu_native в Cargo даже не вызывает перекомпиляцию.Переход на следующую конфигурацию Cargo приводит к принудительной перекомпиляции с более быстрыми инструкциями:

[build]
rustflags = ["-C", "target-cpu=native"]

Однако это скомпилируется с target-cpu=native с функциями Cargo по умолчанию, что не былов розыске.Из книги «Карго» то, что я хочу, кажется возможным, но я не вижу, что я делаю неправильно.

1 Ответ

0 голосов
/ 03 июня 2018

Не думаю, что это поддерживается (пока?).Я улучшил Cargo, чтобы распечатать, какие флаги конфигурации проверяются при разрешении:

[
    Name("debug_assertions"),
    Name("proc_macro"),
    KeyPair("target_arch", "x86_64"),
    KeyPair("target_endian", "little"),
    KeyPair("target_env", ""),
    KeyPair("target_family", "unix"),
    KeyPair("target_os", "macos"),
    KeyPair("target_pointer_width", "64"),
    Name("unix"),
]

[target.'cfg(cpu_native)']

Это неправильный синтаксис для функции Cargo;обычно это будет cfg(feature = "cpu_native").

...