Целевые спецификации c пакетов в рабочем пространстве Car go - PullRequest
0 голосов
/ 17 апреля 2020

Можно ли условно включить пакеты car go в рабочую область или указать машине go в файле пакета go .toml игнорировать их?

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

[workspace]
members = [
    "main",
    "lib_common",
    "lib_linux_only",
    "lib_macos_only",
]

Все пакеты lib являются динамическими c библиотеками, поэтому вполне нормально, что некоторые из них не будут собираться на всех платформах (потому что основной исполняемый файл будет знать во время выполнения, какой из них загружать или нет). Но это должно произойти «тихо».

В модулях, указанных в платформе c, у меня есть проверка условной компиляции, подобная

#[cfg(not(target_os = "linux"))]
compile_error!("This feature requires Linux");

, что означает, что я не могу запустить основной исполняемый файл, потому что спецификация платформы c пакеты не могут быть собраны. Я должен закомментировать пакет linux для ma c и пакет ma c для linux в этом случае.

...