Има ли начин да копирате компилация на изходния код на Qt на друго място?

Изграждаме приложение за Windows и Mac, използвайки търговски лиценз на Qt, който изграждаме от git клонинг.

Имаме настройка за изграждане, използвайки Hudson с потенциално няколко агента за изграждане, и това, което бих искал да направя поне за Windows, е да изградя веднъж, след което да внедря Qt за изграждане на всеки агент (вместо да трябва да изграждам Qt на всеки агент). Изглежда обаче, че вграденият Qt не обича да бъде местен или копиран.

Има ли начин да се заобиколи това? Една мисъл, която имахме, беше дали има някаква настройка, която да изгради Qt, така че да прилича на тяхната двоична дистрибуция, но не виждам начин да направя това.


person Stephen Penny    schedule 24.06.2010    source източник
comment
Първоначалната грешка изглежда е: QMAKESPEC не е зададен, така че конфигурацията не може да бъде изведена. След това получавам редица други грешки, но подозирам, че всички произтичат от тази.   -  person Stephen Penny    schedule 24.06.2010
comment
Пътищата за изграждане всъщност са вградени в библиотеката QtCore. Ако се опитате да преместите компилация, ще има много грешки, някои от които доста фини. например върнатите стойности за QLibraryInfo::LibraryLocation ще бъдат грешни.   -  person rohanpm    schedule 25.06.2010
comment
Вижте Как да инсталирате Qt на Windows след изграждане?   -  person Piotr Dobrogost    schedule 23.02.2013


Отговори (1)


Начинът, по който работят издадените двоични файлове на Qt, е следният:

Qt е вграден в много дълъг път на компилация (напр. на windows, c:\Qt\______________padding__________for_________packaging________________). След това се пакетира в инсталатор. Инсталаторът съдържа персонализиран плъгин, който сканира през двоичните файлове по време на инсталиране и коригира двоичните файлове на Qt, заменяйки дългия път на компилация с Пътят за инсталиране на потребителя Забележете, размерът на двоичния файл не може да бъде променен, така че пътят за инсталиране на потребителя винаги трябва да е по-къс от пътя за компилация...

На Mac и Linux също има подобно munging на rpaths. Или rpath използва $ORIGIN, за да го направи относителен, или е двоично закърпен като горния път.

Скриптовете, които правят двоичните пакети, са доста монолитни и тази логика не се извлича лесно...

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

person rohanpm    schedule 24.06.2010