LAZRUS FPC SMARTLINK WIN

Вопросы программирования и использования среды Lazarus.

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

Ответить
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

LAZRUS FPC SMARTLINK WIN

Сообщение alaken »

Приветствую сообщество!
Не придумал ничего более умного для названия темы, чем перечислить относящиеся к моим вопросам слова. (((

Предистория.
Долго работал с Delphi (7/2006/Turbo/2009), было разработано и реализовано несколько проектов которые работают и ими пользуются сотрудники нашей компании.
Недавно узнал о проекте Lazarus и очень им заинтересовался. Решил полностью переселиться на Lazarus так как вижу преимущества Lazarus перед Delphi, IDE немного уступает по удобству, но в остальном одни плюсы ИМХО. Так как система похожая с Delphi заинтересовал тот же вопрос, что и интересовал программируя на Delphi - размер исполнимого файла. Посмотрев, по изучав и опробовава Lazarus, почитав несколько форумов, где затрагиваются вопросы размера исполнимого файла, узнал про директиву компилятора SMARTLINK, также почитав про нее в постах на форуме, результат работы дерективы виден лишь в том случае если модули подключаемые к программе были собраны с этой директивой.
Вопрос первый: Как узнать был ли собран модуль с директивой SMARTLINK, и если он собран не используя директиву как собрать его с ней?
До разбора вопроса размера исполнимого файла, уже было собрался создать проект который бы анализировал бы исходник и создавал к нему модули только с теми переменными и классами и методами в классах, которые необходимы для проекта. Если директива SMARTLINK не то что я думаю, то этот проект начну реализовывать..


На следующий вопрос уже дали удовлетворительный ответ в сообщении от v-t-l и утвердили в сообщении от Mr.Smart
Вопрос второй: В нескольких постах советовали смотреть ключи компилятора fpc.cfg, посмотрев увидел следующее:

# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
-O2
-Xs
#WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
-glh
-Crtoi
#WRITE Compiling Debug Version
#ENDIF

Вопрос, где в Lazarus включить режим компиляции Release? если такой есть то извините, ткните носом.



Третий вопос про FPC не созрел... будет позже.
Последний раз редактировалось alaken 23.02.2010 13:25:58, всего редактировалось 2 раза.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

если я правильно понял о чем речь, то ответ на второй вопрос: в параметрах проекта нужно убрать ряд галок связанных с отладкой.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Padre_Mortius писал(а):если я правильно понял о чем речь, то ответ на второй вопрос: в параметрах проекта нужно убрать ряд галок связанных с отладкой.


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

А так получается самому настраивать параметры компиляции. Понятно.

У вас показан включенный параметр "Вырезать символы из исполнимого файла -Xs", читал про этот параметр, в форуме утверждалось, что он не все вырезает и нужно прогонять утилитой экзешник чтобы полностью удалить. Не замечали Вы такого что компилятор не все строки вырезает?

Кстате, у меня вид окна параметров несколько другой версия Lazarus 0.9.28.2 для Windows, есть новее?
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Можно попробовать написать в .lpr-файле

Код: Выделить всё

{$DEFINE DEBUG}
или

Код: Выделить всё

{$DEFINE RELEASE}

Если не поможет написать в "Проект - Параметры компилятора - Другие - Параметры пользователя"
или

Код: Выделить всё

-dRELEASE
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

v-t-l
Поможет, но только второй вариант :wink:
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Спасибо, второй вопрос можно закрывать.

Помогите с первым вопросом.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Почитайте тут
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

2 Mr.Smart
Может тогда сразу и добавите данный пункт к статье?
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Mr.Smart писал(а):Почитайте тут


Спасибо за ссылку, очень позновательная статья.
Узнал про директиву SMARTLINK и ее подводные камни.

Но по существу, как пересобрать модули с данной директивой? можно не подробно, просто объясните принцип.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

alaken писал(а):Кстате, у меня вид окна параметров несколько другой версия Lazarus 0.9.28.2 для Windows, есть новее?

Это скриншот лазаруса из SVN (0.9.29).
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Padre_Mortius писал(а):2 Mr.Smart
Может тогда сразу и добавите данный пункт к статье?

Мне сейчас лень. Вы просто не представляете как...
А что вам мешает это сделать?

Добавлено спустя 1 минуту 22 секунды:
Тем более ни FPC ни Lazarus под рукой нет, а ставить, читайте выше :oops:
з.ы. я сейчас совершенно другими вещами занимаюсь...
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Пробую пересобрать пакеты самим Lazarus'ом
Сервис-> Параметры сборки Lazarus...
В поле Параметры пишу "-Xs -O3 -XX -CX";
Флаг "С пакетами" установлен.
Жму собрать...

в результате получаю Lazarus.exe ~110Мб
похоже что параметры не учитываются, или не эти параметры подразумеваются в этом поле...
так как ключ "-Xs" должен вырезать строки отладочной информации

уточняю "-XX" - это SMARTLINK ON?

тем более что в FPC.cfg
не установлены -glh, отладочные ключи я полностью удалил из конфига а ключи "-Xs -O3 -XX -CX" прописал.

откуда он еще берет параметры???
Ответить