Несовместимые версии qt с qbs

#qt #github-actions #qbs

Вопрос:

Я работаю над действием на github. Мне нужно скомпилировать программу для конкретной версии qt. Программа построена с использованием qbs. У меня возникла проблема с настройкой qbs таким образом, чтобы он использовал правильную версию Qt. Установлено две версии. Первый устанавливается с помощью sudo apt-get. Это версия 5.12.8. Эта версия установлена как зависимость от qbs. Второй qt устанавливается вместе с aqt. Это версия 5.15.2.

Сценарий действия на github-это

 name: Qbs-Tests
on: push
jobs:
  ubuntu:
    name: "test on ubuntu"
    runs-on: ubuntu-latest
    steps:
      - name: install clang12, qbs, qmake
        run: |
          sudo apt-get update -y
          sudo apt-get install -y clang-12 llvm-12 qbs qt5-qmake
          
      - name: Install Qt
        uses: jurplel/install-qt-action@v2
        with:
          version: 5.15.2

      - name: setup qbs
        run: |
          qbs setup-qt $Qt5_DIR/bin/qmake qt
          qbs config --list profiles
          qbs config defaultProfile qt
 

Но это невозможно, так как я получил сообщение об ошибке

 Creating profile 'qt'.
You may want to set up toolchain information for the generated Qt profile.
profiles.qt.moduleProviders.Qt.qmakeFilePaths: "/home/runner/work/QSqlMigrator/Qt/5.15.2/gcc_64/bin/qmake"
Cannot mix incompatible Qt library (5.12.8) with this library (5.15.2)
 

Я также попытался игнорировать путь системного поиска (обменивается только последняя строка). См. Документ qbs

 qbs config profiles.qt.preferences.ignoreSystemSearchPaths true
 

Но это также приводит к сообщению об ошибке

 Cannot mix incompatible Qt library (5.12.8) with this library (5.15.2)
 

Почему я не могу настроить профиль? Я даже не могу игнорировать системный путь. Откуда взялась несовместимость библиотеки? Я настраиваю только 5.15.2.

Комментарии:

1. Мне кажется, что проблема не в самом qbs, а в вашей системе. Сообщение, которое вы видите, исходит из внутренних компонентов библиотеки Qt. Поскольку Qbs зависит от Qt, он выводит эту ошибку, поскольку среда выполнения, загружаемая при запуске Qbs, отличается от той, которая использовалась при компиляции Qbs. Вы можете проверить эту теорию, вызвав ldd в двоичном файле qbs, чтобы узнать, какую библиотеку Qt он использует. Мне кажется, что сценарий установки, который вы используете, экспортирует библиотеки Qt в LD_LIBRARY_PATH здесь github.com/jurplel/install-qt-action/blob/master/src/… — и это может вызвать проблему.

2. Я думаю, вы могли бы попробовать просто очистить LD_LIBRARY_PATH при запуске Qbs