|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Неужеди в лазарусе не могут сделать аналог делфовского paserver? тогда и прыгать между разными IDE не надо, и компиляция будет из родной ОС (раз уж в лазарусе проблемы сборки для чужых ОС) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 13:56 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
asutp2, paserver это средство деплоя и отладки, причём тут кросс-компиляция? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 14:30 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey, В том что без наличия нормального средства удаленного деплоя и отладки кросскомпиляция не шибко удобна. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 14:32 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
rgreat без наличия нормального средства удаленного деплоя и отладки кросскомпиляция не шибко удобна. Удобство штука субъективная. Кому-то и не обвешенная плагинами IDE неудобна. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 14:39 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey zedxxx И как выясняется, если из-под win64 билдить кросскомпилятор для win32 мы в итоге получаем эмуляцию Extended типа (которая работает медленно и не точно). И что на самом деле, всё надо делать ровно наоборот - ставить win32 компилятор и им билдить для win64. А отключить софтовую эмуляцию в fpcupdeluxe пробовал? Попробовал, компиляция кросс-компилятора завершается ошибкой: fpcdefs.inc(382,2) Error: User defined: Cross-compiling from systems without support for an 80 bit extended floating point type to i386 is not yet supported at this time В сорцах там вот такая заглушка стоит: Код: pascal 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 15:54 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Казалось бы: какая разница кросс-компилятору что там поддерживает хостовая платформа, он же всё равно генерирует набор байт, который не будет на ней исполняться... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 15:57 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey asutp2, paserver это средство деплоя и отладки, причём тут кросс-компиляция? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 16:05 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
zedxxx Попробовал, компиляция кросс-компилятора завершается ошибкой Хм, из-под линукса всё компилируется на ура. zedxxx И как выясняется, если из-под win64 билдить кросскомпилятор для win32 мы в итоге получаем эмуляцию Extended типа (которая работает медленно и не точно). И что на самом деле, всё надо делать ровно наоборот - ставить win32 компилятор и им билдить для win64. Установил лазарь x64 на винду и собрал кросс-компилятор под Win32 (эмуляцию не отключал). Код с Extended компилируется в машинные команды, никакой эмуляции. Твой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Результат кросс-компилятора для i386: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 01:38 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey, Ну да, я в таком же удивлении. Надо разработчиков fpc спрашивать где и в каких случаях у них эмуляция происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 08:28 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Док могу попытаться собрать тестовый проект, если ситльно надо Давай, хочу на это посмотреть. Ты должен помнить, как я сетовал, что, если задавать размеры контрола в runtime (кнопки в моем случае) через GetPreferredSize, то на винде (где собираются нативно) они рисуются корректно, а на линуксе - нет. Увы, на простеньком проекте не воспроизвелось. В прошлый раз (когда жаловался) кнопки в винде были квадратные, на линуксе - прямоугольные. Но там компонентов на форме была куча :( ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 22:49 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Док Ты должен помнить, как я сетовал, что, если задавать размеры контрола в runtime (кнопки в моем случае) через GetPreferredSize, то на винде (где собираются нативно) они рисуются корректно, а на линуксе - нет. Я это помню (у тебя была проблема в том, что хендл едита не был инициализирован на момент запроса GetPreferredSize), только причём здесь кросс-компиляция? Ты же не думаешь, что собери ты этот код из-под линукса у тебя всё заработало бы? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 23:26 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey (у тебя была проблема в том, что хендл едита не был инициализирован на момент запроса GetPreferredSize) Не совсем так, но сути это не меняет. Особенности виджетсетов отношения ко кросс-компиляции не имеют. Вот та тема . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 02:18 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey, если я правильно помню, то для правильной отрисовки кнопки в приложении я должен был открыть сначала форму в дизайнере Лазаря. Если я просто кросскомпилил приложение и запускал на другой платформе, то кнопки рисовались неправильно. Так что, я правильно помню :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 13:14 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Док, Я же не просто так тебе писал про AutoSize. Ты пытаешься привязать размер кнопки к размеру едита. У едита выставлено свойство AutoSize - True. То есть, высота едита может меняться от платформы к платформе (и даже в рамках одной платформы). Теперь смотри что происходит. Ты дизайнишь гуй на винде, и лазарь сохраняет в lfm свойства компонентов. Свойства Left,Top,Width,Height не имеют дефолтных значений, поэтому сохраняются всегда, даже если у контрола AutoSize - True. Таким образом, на винде у тебя сохраняется дефолтная высота высота виндового едита. Далее, в событии OnCreate ты присваиваешь кнопкам высоту едита, но штука в том, что чтение позиции и размера контрола это просто чтение сохранённого значения (этой операции не достаточно для актуализации значения при установленном в истину AutoSize). Таким образом, на винде ты всё равно получаешь корректное значение, т.к. дизайнил тоже на винде и редактор сохранил дефолтное значение высоты виндового едита. Но на другой платформе, где высота едита может отличаться, у тебя не меняется размер кнопок (т.е. он меняется, но на сохранённый в lfm размер виндового едита) т.к. к моменту, когда ты читаешь свойства едита ещё не отработали механизмы актуализирующие размеры контрола. Когда ты открываешь форму на другой платформе, редактор перезаписывает размеры едитов и у тебя всё "начинает работать". Надеюсь, теперь понятно, что дело не в кросс-компиляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 14:43 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Док, ...лазарь сохраняет в lfm свойства компонентов да, я про это совсем забыл :( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 14:51 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
так как работаю с git, то чаще компиляцию всех версий делал в командной строке. Пример тут . Просто скопировал все возможные активные конфигурации в отдельный каталог, при запуске коммандного файла make_all.cmd тупо меняю конфигурацию и вызываю lazbuild.exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 11:29 |
|
Lazarus - Кроссплатформенность
|
|||
---|---|---|---|
#18+
svd Просто скопировал все возможные активные конфигурации в отдельный каталог, при запуске коммандного файла make_all.cmd тупо меняю конфигурацию и вызываю lazbuild.exe. Зачем это делать при наличии режимов сборки? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 13:42 |
|
|
start [/forum/topic.php?fid=58&msg=40115240&tid=2036834]: |
0ms |
get settings: |
10ms |
get forum list: |
9ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 150ms |
0 / 0 |