Я потратил много времени, пытаясь решить эту проблему, и каждый раз упирался в стену:
- Попытка rule_qt6 (Vertexwahn/rules_qt6): это казалось многообещающим, но у него нет aarch64 Linux. версия.
- Попытка использования других правил сообщества (например, The-OpenROAD-Project/qt_bazel_prebuilts): этот репозиторий (rules_qt) привел к неразрешимому аду зависимостей. Для этого требуются несовместимые версии основных зависимостей, таких как protobuf и Rules_proto, которые конфликтуют с существующей настройкой gRPC моего проекта. Использование single_version_override не решило проблему.
В настоящее время я думаю, что Bzlmod, возможно, недостаточно зрел, чтобы обрабатывать сложные немодульные зависимости, такие как Qt, из исходного кода через модуль_extension. Последним средством, по-видимому, является гибридный подход:
- Создание файла WORKSPACE вместе с MODULE.bazel.
- Использование старого, более мощного правила http_archive с атрибутом build_command внутри файла WORKSPACE для загрузки и компиляции Qt.
- Создание этого внешне определенного репозитория доступным для моих целей Bzlmod.
Мое основное требование — герметичная сборка типа FetchContent. Я хочу, чтобы Bazel полностью управлял зависимостью Qt, в идеале собирая его из исходного кода, не полагаясь на установленные в системе библиотеки и без путей жесткого кодирования.
Подробнее здесь: https://stackoverflow.com/questions/797 ... inux-arm64
Мобильная версия