Использование LCL в fpc
Модератор: Модераторы
-
darkpenguin
- новенький
- Сообщения: 26
- Зарегистрирован: 09.06.2017 18:23:32
Re: Использование LCL в fpc
Это обычное явление в никсах. Если ты предоставляешь исходники, то для их сборки пользователю должно быть необходимо установить только то что действительно необходимо установить для их сборки. Для сборки программы на 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.
К примеру, на моей системе, где уже установлены Иксы и MATE:
- fpc со всеми зависимостями (включая ВСЕ библиотеки) и рекомендациями - 170 Мб
- lcl со всеми его зависимостями, но без рекомендаций - 318 Мб
В сумме 488 Мб - учитывая что это практически ВСЕ существующие библиотеки для этого языка!
- Lazarus с его зависимостями и рекомендациями (документация, исходники, исходники FPC) поверх всего этого - ещё 375 Мб
Это более чем в полтора раза больше!! И избежать этого можно, если просто при упаковке пакета вместо зависимости от Lazarus указать зависимость от LCL. Не надо даже вручную указывать пути и флаги - можно как обычно собирать его с помощью lazbuild, который входит в LCL (собственно, это и было моим главным открытием). Ну, а если с помощью Lazarus пишешь приложение, которое не использует LCL вообще - тогда не надо даже LCL указывать. Представьте разницу: вы написали консольную утилитку на Lazarus, и для сборки она требует 863 мегабайта build-time зависимостей. Я написал такую же утилитку, и тоже на Lazarus, но она для сборки требует менее 170 Мб зависимостей (только те модули, которые она действительно использует) - только потому что я задумываюсь о таких вещах и не стану указывать в зависимостях Lazarus, если знаю, что её можно собрать с помощью простого fpc.
Re: Использование LCL в fpc
darkpenguin писал(а):а для того чтобы СОБРАТЬ её на системе у пользователя!
Немного другой подход, Delphi развивался как коммерческий продукт во времена когда в концепцию GNU верили только отбросы общества(грязные хиппи, панки, анархисты..) - короче студенты, Отсюда такой подход - а зачем передавать IDE, когда можно организовать Support.
Linux - двигался в направлении качай-компилируй-отдыхай..
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Использование LCL в fpc
darkpenguin писал(а): Представьте разницу: вы написали консольную утилитку на Lazarus, и для сборки она требует 863 мегабайта build-time зависимостей.
Ну... в этом случае Лазарус выступает только в качестве продвинутого редактора. Собрать прогу можно и вне его -- проверено. Конечно, размер будет отличаться, но собрать вполне можно.
darkpenguin писал(а): Я написал такую же утилитку, и тоже на Lazarus, но она для сборки требует менее 170 Мб зависимостей (только те модули, которые она действительно использует) - только потому что я задумываюсь о таких вещах и не стану указывать в зависимостях Lazarus, если знаю, что её можно собрать с помощью простого fpc.
Следует учесть, что написанный под лазарусом проект использует кучу дополнений, которые, собственно, и являются этими зависимостями: отладчик, редактор ресурсов, редактор меню, текстовый редактор, менеджер проекта, менеджер компонент... и прочая, и прочая.
darkpenguin писал(а):К примеру, на моей системе, где уже установлены Иксы и MATE:
- fpc со всеми зависимостями (включая ВСЕ библиотеки) и рекомендациями - 170 Мб
- lcl со всеми его зависимостями, но без рекомендаций - 318 Мб
В сумме 488 Мб - учитывая что это практически ВСЕ существующие библиотеки для этого языка!
Насколько я знаю, вы немножко нас обманываете... Lazarus это тоже зависимость fpc и его можно поставить во время установки оного. Более того, именно это и рекомендуется делать под линуксом -- отдельный пункт в репозитарии, когда я оттуда устанавливал, был слишком старым.
darkpenguin писал(а):Не надо даже вручную указывать пути и флаги - можно как обычно собирать его с помощью lazbuild, который входит в LCL (собственно, это и было моим главным открытием).
И который есть средство собрать сам лазарус, вне его самого.
-
darkpenguin
- новенький
- Сообщения: 26
- Зарегистрирован: 09.06.2017 18:23:32
Re: Использование LCL в fpc
Нет, сам проект, написанный с помощью "редактора" Lazarus, никаких редакторов не использует. Текстовый файл не использует "Блокнот" - это "Блокнот" использует текстовый файл. IDE - это и есть "продвинутый редактор"! Редактор меню нужен, чтобы это меню разработать - просто чтобы не прописывать это меню вручную по пунктикам в файле с исходниками. Но редактор никак не задействуется, когда этот файл с исходниками компилируется.
Нет, fpc не зависит от Lazarus и даже не рекомендует его. Наоборот, Lazarus зависит от fpc, потому что сам ничего не компилирует - компилирует всё только fpc.
lazbuild - это wrapper для fpc, который работает даже когда Lazarus вообще не установлен. Его специально для этого и сделали - чтобы Lazarus был не нужен для того чтобы просто собрать какой-то его проект (что делается исключительно с помощью fpc).
Лекс Айрин писал(а):Насколько я знаю, вы немножко нас обманываете... Lazarus это тоже зависимость fpc и его можно поставить во время установки оного.
Нет, fpc не зависит от Lazarus и даже не рекомендует его. Наоборот, Lazarus зависит от fpc, потому что сам ничего не компилирует - компилирует всё только fpc.
lazbuild - это wrapper для fpc, который работает даже когда Lazarus вообще не установлен. Его специально для этого и сделали - чтобы Lazarus был не нужен для того чтобы просто собрать какой-то его проект (что делается исключительно с помощью fpc).
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Использование LCL в fpc
ЗЫ: Попробуй собрать прогу используя lazbuild вне компа с установленной Lazarus... боюсь, тебя ждет разочарование
-
darkpenguin
- новенький
- Сообщения: 26
- Зарегистрирован: 09.06.2017 18:23:32
Re: Использование LCL в fpc
Я не просто "попробовал" - я попробовал несколько раз на разных компьютерах с разными операционными системами (включая Debian Jessie x86_64, Windows XP 32-bit и Raspbian Jessie armhf), и на основе этого написал статью, в которой сказано, как это делается и что для этого нужно. О том и речь!
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Re: Использование LCL в fpc
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.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Использование LCL в fpc
darkpenguin писал(а):IDE - это и есть "продвинутый редактор"!
открой лазарус и прочитай заголовок окна : "редактор исходного кода". Понятное дело, что весь лазарус и есть редактор.
darkpenguin писал(а):Редактор меню нужен, чтобы это меню разработать - просто чтобы не прописывать это меню вручную по пунктикам в файле с исходниками.
Я бы не согласился -- если бы дело было так, то меню прописывалось бы в исходном тексте самой программы. Но оно сохраняется в файле ресурсов.
darkpenguin писал(а):Его специально для этого и сделали - чтобы Lazarus был не нужен для того чтобы просто собрать какой-то его проект (что делается исключительно с помощью fpc).
Есть сомнения. К сожалению, я не могу проверить, но в самом билдере есть опция для поиска настроек лазаруса. И при тестовой сборке размер итогового файла совпал до байта. Понятное дело, что сборка идет с помощью FPC, с этим никто и не спорит... но собирать можно по разному.
Думаю, это просто внутренний менеджер сборки, который можно использовать и отдельно.
Добавлено спустя 53 секунды:
shade писал(а):Lazarus НЕ является зависимостью fpc,
Возможно, проще сказать дополнение.
-
darkpenguin
- новенький
- Сообщения: 26
- Зарегистрирован: 09.06.2017 18:23:32
Re: Использование LCL в fpc
У меня меню прописывается в исходном коде самой программы.
В статье, которая там была до моей, было описано, как "написать" окно целиком без использования Лазаруса (он просто делает это более удобным, но точно так же прописывает его в тексте программы). Я подумал, что это достаточно очевидно, и даже не стал переносить в новую статью.
"Зависимость" (Depends:), "рекомендация" (Recommends:) и "предложение" (Suggests:) - это определённые термины, поэтому не "проще сказать", а именно так и надо сказать.
Есть большая разница.
- - -
Нет, они "поставляются" в виде исходников, из которых серверы автоматической сборки уже компилируют всё так чтобы пользователям было удобно ставить. И большинство пользователей пользуются таким удобством вместо того чтобы компилировать сами, но если им не нравится, как что-то скомпилировано, или они хотят что-то поменять - они всегда могут скачать исходник и скомпилировать сами так как им нравится. Это обязательное условие GPL. И если исходник не предоставить - то как минимум это уже никак не может быть GPL.
OpenSource - не "ортодоксальный", "ортодоксальный" - это GPL.
И на самом деле не обязательно "принято собрать на целевой системе", хотя некоторые любят и так делать, но такая возможность обязательно должна быть всегда, иначе это не GPL.
Так что подход именно такой, и IDE - это действительно "лишняя зависимость"! А Lazarus и LCL - это не единое целое, как я уже писал; это два разных пакета, которые предоставляются по отдельности, причём, один от другого даже не зависит (!!). Они рекомендуют друг друга, но не зависят друг от друга, и уж точно они - не "единое целое". И весь смысл сабжа в том чтобы собирать проекты, использующие LCL, только с LCL, но без "лишней зависимости" IDE!
А в чём же ещё писать консольные программы?)) В текстовом редакторе?)) В Lazarus очень удобный редактор кода, и вполне естественно консольные программы писать тоже в нём. И она может даже не использовать LCL! Однако, поскольку большинство участвующих в обсуждении даже и не в курсе, что собирать такую программу можно без Лазаруса - при сборке пакета для распространения они, недолго думая, укажут в зависимостях Лазарус.
В статье, которая там была до моей, было описано, как "написать" окно целиком без использования Лазаруса (он просто делает это более удобным, но точно так же прописывает его в тексте программы). Я подумал, что это достаточно очевидно, и даже не стал переносить в новую статью.
"Зависимость" (Depends:), "рекомендация" (Recommends:) и "предложение" (Suggests:) - это определённые термины, поэтому не "проще сказать", а именно так и надо сказать.
- - -
shade писал(а):очень много дистрибутивов *nix поставляются в бинарном виде
Нет, они "поставляются" в виде исходников, из которых серверы автоматической сборки уже компилируют всё так чтобы пользователям было удобно ставить. И большинство пользователей пользуются таким удобством вместо того чтобы компилировать сами, но если им не нравится, как что-то скомпилировано, или они хотят что-то поменять - они всегда могут скачать исходник и скомпилировать сами так как им нравится. Это обязательное условие GPL. И если исходник не предоставить - то как минимум это уже никак не может быть GPL.
shade писал(а):всё несколько не так, просто в ортодоксальном OpenSource всё принято поставлять в виде исходников и собирать на целевой системе. Если человек хочет собрать программу на fpc, то естественно ему придется поставить сначала fpc. При этом если он пользователь, а не разработчик, то ему не нужна IDE, ему нужна только система сборки, в таком подходе IDE лишняя зависимость. Но как я писал выше, в Lazarus IDE и LCL единое целое, скопированы они с Delphi, в котором совсем другой подход.
OpenSource - не "ортодоксальный", "ортодоксальный" - это GPL.
Так что подход именно такой, и IDE - это действительно "лишняя зависимость"! А Lazarus и LCL - это не единое целое, как я уже писал; это два разных пакета, которые предоставляются по отдельности, причём, один от другого даже не зависит (!!). Они рекомендуют друг друга, но не зависят друг от друга, и уж точно они - не "единое целое". И весь смысл сабжа в том чтобы собирать проекты, использующие LCL, только с LCL, но без "лишней зависимости" IDE!
shade писал(а):зачем писать консольные программы на Lazarus? я конечно понимаю что можно, что в Lazarus есть соответствующий тип проекта...
далее, если речь идет про Консольную утилиту, то причем тут LCL? LCL это компоненты для GUI, всё что вам нужно для консольного приложения есть в самом FPC.
А в чём же ещё писать консольные программы?)) В текстовом редакторе?)) В Lazarus очень удобный редактор кода, и вполне естественно консольные программы писать тоже в нём. И она может даже не использовать LCL! Однако, поскольку большинство участвующих в обсуждении даже и не в курсе, что собирать такую программу можно без Лазаруса - при сборке пакета для распространения они, недолго думая, укажут в зависимостях Лазарус.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Re: Использование LCL в fpc
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
-
darkpenguin
- новенький
- Сообщения: 26
- Зарегистрирован: 09.06.2017 18:23:32
Re: Использование LCL в fpc
Да, так обычно и делается - в текстовом редакторе с подсветкой кода, а IDE - либо чтобы потом отлаживать всё это, либо чтобы формы быстрее делать.
И поэтому меня и интересовало, можно ли Лазарусом прикрутить форму к программе, не потеряв возможность продолжать работать и собирать программу без него.
Я тоже в студенчестве пользовался Delphi, и вот сейчас смотрю на другие IDE и пока даже не могу понять, как там компоненты на окошки приляпывать. %) Да в Лазарусе можно успеть всё окошко подготовить, пока Eclipse ещё только запускается! %)
Я тоже в студенчестве пользовался Delphi, и вот сейчас смотрю на другие IDE и пока даже не могу понять, как там компоненты на окошки приляпывать. %) Да в Лазарусе можно успеть всё окошко подготовить, пока Eclipse ещё только запускается! %)
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Re: Использование LCL в fpc
Я так и не понял, нафига пересобирать лазаровскую программу без лазаруса. Вероятно, это какие-то религиозные заморочки линуксойдов. Ну да и ладно, раз есть такая фишка. то и прекрасно.
Re: Использование LCL в fpc
Снег Север писал(а):Я так и не понял, нафига пересобирать лазаровскую программу без лазаруса
Ну например у меня нет линукса, но сервер, на котором я должен разместить программу - основан на линуксе. Установить туда лазарус - мне сложно. Зато, я могу загрузить туда линуксовские исполняемые файлы FPC и директорию LCL. Затем, я смогу программировать как и прежде на винде, а итоговый результат компилировать уже на линуксовском сервере, т.к. код должен работать на линукс-сервере, а у меня винда. Соответственно, такая возможность - мне удобна. Если я правильно понял, то такая схема будет работать. Верно?
Re: Использование LCL в fpc
Ну например у меня нет линукса,
Не катит.
Берёшь VirtualBox - и у тебя есть линукс. Без аппаратного ускорения, скорей всего, но лазарусу оно не спёрлось.

Re: Использование LCL в fpc
Cheb писал(а):Берёшь VirtualBox - и у тебя есть линукс.
Пробовал, мощности маловато, и с ОЧЕНЬ большим трудом можно компилировать. Если так нельзя то проще поставить линукс. Я просто подумал, что FPC размещённое на сервере, позволит мне легко компилировать программы прямо на сервере, без установки лазаруса. Ну раз нет, значит нет.
