Существует ли способ скопировать сборку исходного кода QT к другому местоположению?

Мы создаем Windows и приложение для Mac с помощью коммерческой лицензии QT, который мы создаем из клона мерзавца.

У нас есть установка сборки с помощью Гудзона с потенциально несколькими агентами сборки, и что я хотел бы сделать для Windows, по крайней мере, сборка, после того как затем развертывают QT сборки на каждом агенте (а не должны создать QT на каждом агенте). Кажется, однако, что созданному QT не нравится быть перемещенным или скопированным.

Существует ли путь вокруг этого? Одна мысль, которую мы имели, была, была ли некоторая установка, которая создаст QT, таким образом, это напомнило их двоичное распределение, но я не вижу способ сделать это.

6
задан Stephen Penny 24 June 2010 в 13:01
поделиться

1 ответ

Выпущенные двоичные файлы Qt работают следующим образом:

Qt встраивается в очень длинный путь сборки (например, на windows, c:\Qt\______________padding__________for_________packaging________________). Затем он упаковывается в программу установки. Программа установки содержит пользовательский плагин, который сканирует двоичные файлы во время установки и исправляет двоичные файлы Qt, заменяя длинный путь сборки на путь установки пользователя. Обратите внимание, что размер двоичного файла не может быть изменен, поэтому путь установки пользователя всегда должен быть короче пути сборки...

На Mac и Linux также существует аналогичное разделение rpaths. Либо rpath использует $ORIGIN, чтобы сделать его относительным, либо он бинарно исправлен, как вышеприведенный путь.

Скрипты, создающие бинарные пакеты, довольно монолитны, и эту логику нелегко извлечь...

Для вашего случая использования я бы рекомендовал просто собирать Qt по предсказуемому пути все время. Всегда собирайте Qt в c:\Qt_test и развертывайте в c:\Qt_test на каждом агенте. Недостатком является то, что Hudson может не очень хорошо справляться с автоматической очисткой, поэтому вам придется написать сценарий самостоятельно.

5
ответ дан 17 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: