Есть ли способ скопировать сборку исходного кода Qt в другое место? - PullRequest
6 голосов
/ 24 июня 2010

Мы создаем приложение для Windows и Mac, используя коммерческую лицензию Qt, которую мы создаем из git clone.

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

Есть ли способ обойти это? Мы подумали, была ли какая-то настройка, которая собирала бы Qt, чтобы он напоминал их двоичное распределение, но я не вижу способа сделать это.

1 Ответ

5 голосов
/ 25 июня 2010

Способ работы выпущенных двоичных файлов Qt таков:

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

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

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

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

...