Использование LCL в fpc

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Использование LCL в fpc

Сообщение darkpenguin » 11.06.2017 08:35:35

Это обычное явление в никсах. Если ты предоставляешь исходники, то для их сборки пользователю должно быть необходимо установить только то что действительно необходимо установить для их сборки. Для сборки программы на Free Pascal совершенно не нужно устанавливать графический инструмент для облегчения процесса разработки вместе с его документацией, ЕГО исходниками и исходниками Free Pascal (а Lazarus от всего этого зависит).

К примеру, на моей системе, где уже установлены Иксы и MATE:
- fpc со всеми зависимостями (включая ВСЕ библиотеки) и рекомендациями - 170 Мб
- lcl со всеми его зависимостями, но без рекомендаций - 318 Мб
В сумме 488 Мб - учитывая что это практически ВСЕ существующие библиотеки для этого языка!
- Lazarus с его зависимостями и рекомендациями (документация, исходники, исходники FPC) поверх всего этого - ещё 375 Мб
Это более чем в полтора раза больше!! И избежать этого можно, если просто при упаковке пакета вместо зависимости от Lazarus указать зависимость от LCL. Не надо даже вручную указывать пути и флаги - можно как обычно собирать его с помощью lazbuild, который входит в LCL (собственно, это и было моим главным открытием). Ну, а если с помощью Lazarus пишешь приложение, которое не использует LCL вообще - тогда не надо даже LCL указывать. Представьте разницу: вы написали консольную утилитку на Lazarus, и для сборки она требует 863 мегабайта build-time зависимостей. Я написал такую же утилитку, и тоже на Lazarus, но она для сборки требует менее 170 Мб зависимостей (только те модули, которые она действительно использует) - только потому что я задумываюсь о таких вещах и не стану указывать в зависимостях Lazarus, если знаю, что её можно собрать с помощью простого fpc.
darkpenguin
новенький
 
Сообщения: 26
Зарегистрирован: 09.06.2017 19:23:32

Re: Использование LCL в fpc

Сообщение olegy123 » 11.06.2017 09:53:12

darkpenguin писал(а):а для того чтобы СОБРАТЬ её на системе у пользователя!


Немного другой подход, Delphi развивался как коммерческий продукт во времена когда в концепцию GNU верили только отбросы общества(грязные хиппи, панки, анархисты..) - короче студенты, Отсюда такой подход - а зачем передавать IDE, когда можно организовать Support.
Linux - двигался в направлении качай-компилируй-отдыхай..
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Использование LCL в fpc

Сообщение Лекс Айрин » 11.06.2017 14:41:50

darkpenguin писал(а): Представьте разницу: вы написали консольную утилитку на Lazarus, и для сборки она требует 863 мегабайта build-time зависимостей.

Ну... в этом случае Лазарус выступает только в качестве продвинутого редактора. Собрать прогу можно и вне его -- проверено. Конечно, размер будет отличаться, но собрать вполне можно.

darkpenguin писал(а): Я написал такую же утилитку, и тоже на Lazarus, но она для сборки требует менее 170 Мб зависимостей (только те модули, которые она действительно использует) - только потому что я задумываюсь о таких вещах и не стану указывать в зависимостях Lazarus, если знаю, что её можно собрать с помощью простого fpc.


Следует учесть, что написанный под лазарусом проект использует кучу дополнений, которые, собственно, и являются этими зависимостями: отладчик, редактор ресурсов, редактор меню, текстовый редактор, менеджер проекта, менеджер компонент... и прочая, и прочая.
darkpenguin писал(а):К примеру, на моей системе, где уже установлены Иксы и MATE:
- fpc со всеми зависимостями (включая ВСЕ библиотеки) и рекомендациями - 170 Мб
- lcl со всеми его зависимостями, но без рекомендаций - 318 Мб
В сумме 488 Мб - учитывая что это практически ВСЕ существующие библиотеки для этого языка!

Насколько я знаю, вы немножко нас обманываете... Lazarus это тоже зависимость fpc и его можно поставить во время установки оного. Более того, именно это и рекомендуется делать под линуксом -- отдельный пункт в репозитарии, когда я оттуда устанавливал, был слишком старым.

darkpenguin писал(а):Не надо даже вручную указывать пути и флаги - можно как обычно собирать его с помощью lazbuild, который входит в LCL (собственно, это и было моим главным открытием).


И который есть средство собрать сам лазарус, вне его самого.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Использование LCL в fpc

Сообщение darkpenguin » 11.06.2017 14:54:56

Нет, сам проект, написанный с помощью "редактора" Lazarus, никаких редакторов не использует. Текстовый файл не использует "Блокнот" - это "Блокнот" использует текстовый файл. IDE - это и есть "продвинутый редактор"! Редактор меню нужен, чтобы это меню разработать - просто чтобы не прописывать это меню вручную по пунктикам в файле с исходниками. Но редактор никак не задействуется, когда этот файл с исходниками компилируется.

Лекс Айрин писал(а):Насколько я знаю, вы немножко нас обманываете... Lazarus это тоже зависимость fpc и его можно поставить во время установки оного.

Нет, fpc не зависит от Lazarus и даже не рекомендует его. Наоборот, Lazarus зависит от fpc, потому что сам ничего не компилирует - компилирует всё только fpc.

lazbuild - это wrapper для fpc, который работает даже когда Lazarus вообще не установлен. Его специально для этого и сделали - чтобы Lazarus был не нужен для того чтобы просто собрать какой-то его проект (что делается исключительно с помощью fpc).
darkpenguin
новенький
 
Сообщения: 26
Зарегистрирован: 09.06.2017 19:23:32

Re: Использование LCL в fpc

Сообщение Лекс Айрин » 11.06.2017 15:09:32

ЗЫ: Попробуй собрать прогу используя lazbuild вне компа с установленной Lazarus... боюсь, тебя ждет разочарование
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Использование LCL в fpc

Сообщение darkpenguin » 11.06.2017 15:13:58

Я не просто "попробовал" - я попробовал несколько раз на разных компьютерах с разными операционными системами (включая Debian Jessie x86_64, Windows XP 32-bit и Raspbian Jessie armhf), и на основе этого написал статью, в которой сказано, как это делается и что для этого нужно. О том и речь!
darkpenguin
новенький
 
Сообщения: 26
Зарегистрирован: 09.06.2017 19:23:32

Re: Использование LCL в fpc

Сообщение shade » 11.06.2017 15:23:01

darkpenguin писал(а):У нас, в мире свободного софта, не принято распространять просто "исполняемый файл". Он не запустится у меня на Raspberry Pi, и он не позволит использовать те возможности, которые даёт cmake или Autotools.

Не знаю у кого "у вас", очень много дистрибутивов *nix поставляются в бинарном виде, я не владею статистикой, но более чем уверен что подавляющая часть установок установлены их бинарных дистрибутивов. Я например на работе не могу себе позволить тратить целый день инсталляцию ОС собирая её из исходников, когда можно за 30 минут получить полностью рабочую установку включая минимальную настройку и сразу приступить к работе. Тот же Raspberry Pi, наверное самый популярный дистрибутив это Raspbian который является бинарным дистрибутивом, вы точно также можете сделать бинарный deb-пакет для Raspberry Pi

Снег Север писал(а):Какая-то совершенно дикая концепция - поставлять 100+ Мб исходников и сам fpc для пересборок и при этом экономить на IDE. Мне такого не понять...

всё несколько не так, просто в ортодоксальном OpenSource всё принято поставлять в виде исходников и собирать на целевой системе. Если человек хочет собрать программу на fpc, то естественно ему придется поставить сначала fpc. При этом если он пользователь, а не разработчик, то ему не нужна IDE, ему нужна только система сборки, в таком подходе IDE лишняя зависимость. Но как я писал выше, в Lazarus IDE и LCL единое целое, скопированы они с Delphi, в котором совсем другой подход.

darkpenguin писал(а):вы написали консольную утилитку на Lazarus

зачем писать консольные программы на Lazarus? я конечно понимаю что можно, что в Lazarus есть соответствующий тип проекта...
далее, если речь идет про Консольную утилиту, то причем тут LCL? LCL это компоненты для GUI, всё что вам нужно для консольного приложения есть в самом FPC.

Лекс Айрин писал(а):Lazarus это тоже зависимость fpc и его можно поставить во время установки оного.

Lazarus НЕ является зависимостью fpc, fpc можно поставить и использовать отдельно. Lazarus зависит от fpc, вы не можете использовать Lazarus без fpc.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Использование LCL в fpc

Сообщение Лекс Айрин » 11.06.2017 15:32:16

darkpenguin писал(а):IDE - это и есть "продвинутый редактор"!


открой лазарус и прочитай заголовок окна : "редактор исходного кода". Понятное дело, что весь лазарус и есть редактор.
darkpenguin писал(а):Редактор меню нужен, чтобы это меню разработать - просто чтобы не прописывать это меню вручную по пунктикам в файле с исходниками.


Я бы не согласился -- если бы дело было так, то меню прописывалось бы в исходном тексте самой программы. Но оно сохраняется в файле ресурсов.

darkpenguin писал(а):Его специально для этого и сделали - чтобы Lazarus был не нужен для того чтобы просто собрать какой-то его проект (что делается исключительно с помощью fpc).


Есть сомнения. К сожалению, я не могу проверить, но в самом билдере есть опция для поиска настроек лазаруса. И при тестовой сборке размер итогового файла совпал до байта. Понятное дело, что сборка идет с помощью FPC, с этим никто и не спорит... но собирать можно по разному.
Думаю, это просто внутренний менеджер сборки, который можно использовать и отдельно.

Добавлено спустя 53 секунды:
shade писал(а):Lazarus НЕ является зависимостью fpc,


Возможно, проще сказать дополнение.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Использование LCL в fpc

Сообщение darkpenguin » 11.06.2017 16:46:53

У меня меню прописывается в исходном коде самой программы.

В статье, которая там была до моей, было описано, как "написать" окно целиком без использования Лазаруса (он просто делает это более удобным, но точно так же прописывает его в тексте программы). Я подумал, что это достаточно очевидно, и даже не стал переносить в новую статью.

"Зависимость" (Depends:), "рекомендация" (Recommends:) и "предложение" (Suggests:) - это определённые термины, поэтому не "проще сказать", а именно так и надо сказать. :) Есть большая разница.

- - -
shade писал(а):очень много дистрибутивов *nix поставляются в бинарном виде

Нет, они "поставляются" в виде исходников, из которых серверы автоматической сборки уже компилируют всё так чтобы пользователям было удобно ставить. И большинство пользователей пользуются таким удобством вместо того чтобы компилировать сами, но если им не нравится, как что-то скомпилировано, или они хотят что-то поменять - они всегда могут скачать исходник и скомпилировать сами так как им нравится. Это обязательное условие GPL. И если исходник не предоставить - то как минимум это уже никак не может быть GPL.

shade писал(а):всё несколько не так, просто в ортодоксальном OpenSource всё принято поставлять в виде исходников и собирать на целевой системе. Если человек хочет собрать программу на fpc, то естественно ему придется поставить сначала fpc. При этом если он пользователь, а не разработчик, то ему не нужна IDE, ему нужна только система сборки, в таком подходе IDE лишняя зависимость. Но как я писал выше, в Lazarus IDE и LCL единое целое, скопированы они с Delphi, в котором совсем другой подход.

OpenSource - не "ортодоксальный", "ортодоксальный" - это GPL. :) И на самом деле не обязательно "принято собрать на целевой системе", хотя некоторые любят и так делать, но такая возможность обязательно должна быть всегда, иначе это не GPL.
Так что подход именно такой, и IDE - это действительно "лишняя зависимость"! А Lazarus и LCL - это не единое целое, как я уже писал; это два разных пакета, которые предоставляются по отдельности, причём, один от другого даже не зависит (!!). Они рекомендуют друг друга, но не зависят друг от друга, и уж точно они - не "единое целое". И весь смысл сабжа в том чтобы собирать проекты, использующие LCL, только с LCL, но без "лишней зависимости" IDE!

shade писал(а):зачем писать консольные программы на Lazarus? я конечно понимаю что можно, что в Lazarus есть соответствующий тип проекта...
далее, если речь идет про Консольную утилиту, то причем тут LCL? LCL это компоненты для GUI, всё что вам нужно для консольного приложения есть в самом FPC.

А в чём же ещё писать консольные программы?)) В текстовом редакторе?)) В Lazarus очень удобный редактор кода, и вполне естественно консольные программы писать тоже в нём. И она может даже не использовать LCL! Однако, поскольку большинство участвующих в обсуждении даже и не в курсе, что собирать такую программу можно без Лазаруса - при сборке пакета для распространения они, недолго думая, укажут в зависимостях Лазарус.
darkpenguin
новенький
 
Сообщения: 26
Зарегистрирован: 09.06.2017 19:23:32

Re: Использование LCL в fpc

Сообщение shade » 11.06.2017 18:43:29

darkpenguin писал(а):А в чём же ещё писать консольные программы?)) В текстовом редакторе?))

в редакторе, а почему нет?

То что я пишу далее, чисто мой выбор, я никого не призываю выкинуть IDE, просто хочу сказать что есть и другие варианты и каждый выбирает себе инструмент как ему больше нравиться.

Из IDE мне нравился только Delphi, на котором писал только в студенческие годы, и даже тогда я начал переходить от IDE к простому редактору, сначала я сидел на ASMeditor, настаивал в нем под себя подсветку синтаксиса и писал в нем и на паскале и на С и PHP. Потом когда перешел на Linux, я стал всё писать в Kate и до сих пор, вот уже более 7 лет пишу код преимущественно в Kate, иногда во встроенном редакторе MC. Я люблю легковесность, и простой редактор вместо тяжелой IDE для меня самое оптимальное решение. Все IDE, кроме Delphi (работал 5й и 6й версиях) я находил глючными и тормознутыми. Delphi тяжеловесный, но он был вылизан (не знаю как сейчас...) и в нем было приятно работать.

в PHP сборка не нужна вообще, интерпретируемый язык. В проектах на C++ использую gcc и make для сборки, сам руками пишу Makefile, иногда юзаю autotools (очень минимально), а код редактирую в Kate. Для создания сайтов, для написания демонов Linux, для консольных программ мне не нужна IDE. Я об IDE вспоминаю только когда речь заходит про GUI, потому что Delphi <s>травмировал мой мозг еще в школе</s> приучил к визуальному программировании и я больше не могу работать в других средах отличных от Delphi/Lazarus
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Использование LCL в fpc

Сообщение darkpenguin » 11.06.2017 19:01:37

Да, так обычно и делается - в текстовом редакторе с подсветкой кода, а IDE - либо чтобы потом отлаживать всё это, либо чтобы формы быстрее делать. :) И поэтому меня и интересовало, можно ли Лазарусом прикрутить форму к программе, не потеряв возможность продолжать работать и собирать программу без него.

Я тоже в студенчестве пользовался Delphi, и вот сейчас смотрю на другие IDE и пока даже не могу понять, как там компоненты на окошки приляпывать. %) Да в Лазарусе можно успеть всё окошко подготовить, пока Eclipse ещё только запускается! %)
darkpenguin
новенький
 
Сообщения: 26
Зарегистрирован: 09.06.2017 19:23:32

Re: Использование LCL в fpc

Сообщение Снег Север » 12.06.2017 09:26:46

Я так и не понял, нафига пересобирать лазаровскую программу без лазаруса. Вероятно, это какие-то религиозные заморочки линуксойдов. Ну да и ладно, раз есть такая фишка. то и прекрасно.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Использование LCL в fpc

Сообщение vitaly_l » 12.06.2017 10:13:00

Снег Север писал(а):Я так и не понял, нафига пересобирать лазаровскую программу без лазаруса

Ну например у меня нет линукса, но сервер, на котором я должен разместить программу - основан на линуксе. Установить туда лазарус - мне сложно. Зато, я могу загрузить туда линуксовские исполняемые файлы FPC и директорию LCL. Затем, я смогу программировать как и прежде на винде, а итоговый результат компилировать уже на линуксовском сервере, т.к. код должен работать на линукс-сервере, а у меня винда. Соответственно, такая возможность - мне удобна. Если я правильно понял, то такая схема будет работать. Верно?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Использование LCL в fpc

Сообщение Cheb » 12.06.2017 10:22:03

Ну например у меня нет линукса,

Не катит.
Берёшь VirtualBox - и у тебя есть линукс. Без аппаратного ускорения, скорей всего, но лазарусу оно не спёрлось.
Изображение
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Использование LCL в fpc

Сообщение vitaly_l » 12.06.2017 10:29:47

Cheb писал(а):Берёшь VirtualBox - и у тебя есть линукс.

Пробовал, мощности маловато, и с ОЧЕНЬ большим трудом можно компилировать. Если так нельзя то проще поставить линукс. Я просто подумал, что FPC размещённое на сервере, позволит мне легко компилировать программы прямо на сервере, без установки лазаруса. Ну раз нет, значит нет.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

Рейтинг@Mail.ru