Использование LCL в fpc
Модератор: Модераторы
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Сквозняк, бывает... у меня герои на нем шли стабильнее чем на винде.
По поводу вина. Лазарь запускался и компилил в нём давно. Только там такие артефакты бывают... То картинки пропадут, то ещё.. по мелочи. Если память не изменяет эти артефакты повторяются и на винде (давненько сиё тестил и вино + лазарь в топку послал). Поэтому для меня - виртуалбокс и там компилить. Или рабочая машина с необходимой системой.
pupsik писал(а):виртуалбокс и там компилить
Вот я пошёл этим путём, потому что в архиве не нашёл make, без make на сервер fpc не поставишь. И решил сделать полную установку типа искаропки и взять там make.
Скачал 4 архива для debian: binutils, scr-fpc, fpc и lazarus. Постольку поскольку я линукса не знаю, то установил пакеты командой dpkg -i <имя файла>. Всё установилось и лазарус появился в рубрике "все программы". Я его запустил. Он запустился, пишет что всё нашёл, кроме make... Этого чёртового make нет и в самом архиве. Мне это никогда не понять, т.к. для винды - make, всегда в инсталяторе есть, а тут нет. Брал оф. версию 1.6.4 с оф. сайта. Поясните мне, пожалуйста, уважаемые линуксоиды: где вы берёте make и зачем его нет в установочном архиве?
make, cmake, gcc и т.д. - это отдельные программы. Плюс, лазарю ещё необходимы девки. Как и фпс.
Добавлено спустя 1 минуту 40 секунд:
как бы
Добавлено спустя 1 минуту 40 секунд:
как бы
pupsik писал(а):make, cmake, gcc и т.д. - это отдельные программы.
Да что вы говорите?
Добавлено спустя 7 минут 53 секунды:
pupsik писал(а):как бы
борода подсказалаСами догадались или подсказал кто?
ух ты: деби поставили. Хм..: а что же бубна дружелюбного не всу...Вот это make это оно?
Да это одна из утилит для сборок проектов. Не только паскалевских.
pupsik писал(а):Да это одна из утилит для сборок проектов.
Ок. спасибо. дальше я наверно разберусь.
Флуд - это реальное психическое заболевание и у него есть медицинское название.
+100500
не позволят даже достучаться до сервера,
АФФТАРЖЖОТ
, в итоге вы делаете хуже себе, т.к. болезнь прогрессирует.
Без шуток.
З.Ы. А вдруг у меня тоже интернет зависимость? =:(
Cheb писал(а): Теперь я грустный буду.
Без шуток.
З.Ы. А вдруг у меня тоже интернет зависимость? =:(
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
vitaly_l писал(а):Постольку поскольку я линукса не знаю, то установил пакеты командой dpkg -i <имя файла>.
Лучше использовать утилиты с автоматическим разрешением зависимостей типа apt-get, правда, при этом надо будет добавить репозитарий пакета.
Cheb писал(а):З.Ы. А вдруг у меня тоже интернет зависимость? =:(
По любому мы тут все зависимые... Лично я проверяю очень просто... беру стопку книжек, и вообще не подхожу к компу неделю-другую. А то и вообще уезжаю за город.
Пока ломок не было.
Сам Lazarus, в общем-то, и не нужен - нужен его "кусок" - lazbuild (это - "идеологически правильный способ"). Он вполне себе консольный, и в некоторых дистрибутивах может идти отдельно от собственно IDE. Но есть (раньше был точно) и "идеологически неправильный способ", который раньше срабатывал даже тогда, когда в lazarus что-то поломалось (но в рассылке lazarus меня сильно за него ругали). Способ работает и сейчас, с небольшими модификациями:
1. FPC должен быть установлен. Исходники не обязательно.
2. Берём исходники lazarus и копируем оттуда в отдельный каталог все файлы (по крайней мере, .pp, .pas, .inc, .res) из каталогов:
2.1. lcl (без подкаталогов)
2.2. lcl/widgetset
2.3. lcl/include
2.4. lcl/nonwin32 (если не win32)
2.5. components/lazutils
2.6. packager/registration
2.7. lcl/interfaces/{выбираем нужный}. Если там есть подкаталоги - и из них копируем тоже.
Далее ищем нужный нам .lpr, запускаем fpc -S2 {наш lpr} -Fu{каталог, куда скопировали всё}.
Проект скомпилирован (если ему требуется что-то особенное - его тоже можно бросить в тот же каталог). При дальнейшем желании поиздеваться можно в объединённом каталоге откомпилировать все файлы pas и pp и стереть их.
Только что проверено на актуальной версии svn.
1. FPC должен быть установлен. Исходники не обязательно.
2. Берём исходники lazarus и копируем оттуда в отдельный каталог все файлы (по крайней мере, .pp, .pas, .inc, .res) из каталогов:
2.1. lcl (без подкаталогов)
2.2. lcl/widgetset
2.3. lcl/include
2.4. lcl/nonwin32 (если не win32)
2.5. components/lazutils
2.6. packager/registration
2.7. lcl/interfaces/{выбираем нужный}. Если там есть подкаталоги - и из них копируем тоже.
Далее ищем нужный нам .lpr, запускаем fpc -S2 {наш lpr} -Fu{каталог, куда скопировали всё}.
Проект скомпилирован (если ему требуется что-то особенное - его тоже можно бросить в тот же каталог). При дальнейшем желании поиздеваться можно в объединённом каталоге откомпилировать все файлы pas и pp и стереть их.
Только что проверено на актуальной версии svn.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
daesher писал(а): Но есть (раньше был точно) и "идеологически неправильный способ", который раньше срабатывал даже тогда, когда в lazarus что-то поломалось (но в рассылке lazarus меня сильно за него ругали).
И правильно ругали. На предыдущей странице был способ намного проще. Достаточно указать пути до нужных библиотек. Это намного проще и экономичнее. Собственно, лазбилд так и действует.
daesher писал(а):- нужен его "кусок" - lazbuild (это - "идеологически правильный способ").
Идеологически правильный способ это использование среды... все остальное суть извращения, которые нужны в достаточно редких случаях. Например, для портирования LCL в другое IDE или сборки лазаруса из консоли.
daesher писал(а): Берём исходники lazarus и копируем оттуда в отдельный каталог все файлы (по крайней мере, .pp, .pas, .inc, .res)
Есть одна особенность... имена файлов не обязательно должны быть индивидуальны. И в случае их совпадения один из "клонов" будет потерян (затерт). То, что этого не произошло ранее есть не более чем привычка программистов не допускать совпадений имен (да и то, даже в лазарусе есть, например, тип Point, который является объявленным дважды -- один раз в компиляторе, а другой в среде. Есть переопределение типа Integer, в зависимости от режима...).
Конечно, если необходимо иметь только один режим сборки под одну платформу, то можно вообще выкинуть все, что не относится к ней... заодно это надо делать и для компилятора. Но опять же, это должно иметь за собой определенную цель, а не просто желание поэкспериментировать.
>Достаточно указать пути до нужных библиотек.
Может в последней версии и достаточно, но в старых было недостаточно. Для более надёжной компиляции необходимо явно задать в командной строке тип графического тулкита.
Может в последней версии и достаточно, но в старых было недостаточно. Для более надёжной компиляции необходимо явно задать в командной строке тип графического тулкита.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Сквозняк, пусть так, но это менее драматично, чем копирование половины кода LCL в проект.
Лекс Айрин писал(а):Достаточно указать пути до нужных библиотек. Это намного проще и экономичнее
Но требуется тащить всюду весь Lazarus.
Лекс Айрин писал(а):Идеологически правильный способ это использование среды... все остальное суть извращения, которые нужны в достаточно редких случаях.
Lazbuild - штатный "сборщик" проектов. Тогда, когда визуальная среда разработки не нужна, в т.ч. и когда на компьютере для сборки нет графической среды.
Лекс Айрин писал(а):Есть одна особенность... имена файлов не обязательно должны быть индивидуальны. И в случае их совпадения один из "клонов" будет потерян (затерт). То, что этого не произошло ранее есть не более чем привычка программистов не допускать совпадений имен (да и то, даже в лазарусе есть, например, тип Point, который является объявленным дважды -- один раз в компиляторе, а другой в среде. Есть переопределение типа Integer, в зависимости от режима...).
Я могу предположить, что путём жесточайших издевательств над кодом можно объединить два одноимённых модуля, но штатными средствами это не получится: компилятор будет искать модуль с определённым именем в пути поиска, и как только найдёт - будет использовать именно его.
Дублирование имён файлов может быть только в случаях:
1. include. Тоже довольно криво и опасно, но можно попробовать, компилируя модули отдельно от проекта. Масса проблем может вытекать.
2. Однотипные файлы для разных ситуаций (например, для разных ситуаций). В штатном случае компилятор при сборке одного проект не должен увидеть два одноимённых модуля.
3. Омонимы из совершенно разных проектов (например, был файл forms.pp для xforms в самом freepascal, он мог конфликтовать с forms из Lazarus - и периодически возникали сбои).
