Компилирование из командной строки
Модератор: Модераторы
Компилирование из командной строки
пишу на Ubuntu 10.4 fpc 2.4.0
Есть проект с использованием OpenGl. В IDE Lazarus все прекрасно компилируется и работает.
Но если попытаться скомпилировать через комантдную строку выдает User defined: this LCL widgetset/OS is not yet supported. что значит дефайн OpenGLTargetDefined не объявлен.
в терминал пишу следующее
/usr/bin/fpc -B -Mdelphi -Tlinux -Fu"Сюда пишу модули" "путь к lpr файлу"
-Fi"" в fpc.cfg записаны
такое чувство что lazarus что-то еще передает. Как-то объявляет дефайны
Есть проект с использованием OpenGl. В IDE Lazarus все прекрасно компилируется и работает.
Но если попытаться скомпилировать через комантдную строку выдает User defined: this LCL widgetset/OS is not yet supported. что значит дефайн OpenGLTargetDefined не объявлен.
в терминал пишу следующее
/usr/bin/fpc -B -Mdelphi -Tlinux -Fu"Сюда пишу модули" "путь к lpr файлу"
-Fi"" в fpc.cfg записаны
такое чувство что lazarus что-то еще передает. Как-то объявляет дефайны
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
azatsh
Открой для себя LazBuild - все сразу будет хорошо.
http://freepascal.ru/article//lazarus/20090224211328/
Открой для себя LazBuild - все сразу будет хорошо.
http://freepascal.ru/article//lazarus/20090224211328/
Данная утилита предназначена для удобной сборки готовых проектов, написанных в Lazarus без запуска самой IDE. Возможность существования этой утилиты обеспечивается тем фактом, что в файле проекта (*.lpi) или пакета (*.lpk) находится информация о зависимостях от других библиотек, которые необходимы для сборки нашего проекта или пакета. Также в файлах проекта находится информация обо всех файлах, которые входят в проект и месте их нахождения.
Дело в том, что проект кросплатформенный. поэтому мне нужно компилировать не читая эти файлы.
У меня под виндами все отлично работает а вот линуксе проблемма возникла
User defined: this LCL widgetset/OS is not yet supported. что значит дефайн OpenGLTargetDefined не объявлен.
это значит что под виджесет по умолчанию не может быть скомпилирован TOpenGLControl.
надо указать компилятору совместимый виджесет, тока я не в курсе как))
Код: Выделить всё
Abstract:
TOpenGLControl is a LCL control with an opengl context.
It works under the following platforms:
- gtk with glx : full
- gtk2 with glx : full
- carbon with agl : full
- cocoa : no
- windows with wgl: full
- wince : no
- qt with glx : no (started)
- fpgui with glx : no
- nogui : no -
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
стоит посмотреть на проект doublecmd... там этот момент разобран по полочкам
Как собирать LCL проекты без Lazarus-а?
* В тех случаях, когда использование графической среды невозможно, вы можете воспользоваться утилитой командной строки: lazbuild.
Эта утилита используется для сборки проектов и lazarus-пакетов (packages).
* Если вам нужно собрать LCL приложение без среды разработки и не используя lazbuild, вам необходимо добавить следующие строки в файл fpc.cfg
# строчки начинающиеся с # можно не добавлять
# это комментарии
# пути для других модулей и компонентов
-Fu{Пусть_к_лазарусу}/lcl/units/{целевая_система}
-Fu{Пусть_к_лазарусу}/components/units/{целевая_система}
Где {целевая_система} это системный префикс, указывающий для какой системы располагаются модули. Обычно этот префикс представляет собой пару имён "Процессор-ОСь", например i386-win32, i386-linux, i386-darwin.:
После добавления этих строк в конфигурационный файл, вызовете команду: fpc myproject.lpr myproject.lpr это имя основного файла проекта (модуль начинающийся с "program" или "library"). Но имя может быть другим, т.к. Лазарус не принуждает Вас использовать расширение .lpr.
Кроме того, если Ваш проект использует какие-либо особые настройки, вы можете получить командную строку для компиляции, используя меню в Лазарусе: Проект->Параметры проекта...->Показать параметры (параметров может быть очень много, удобно скопировать их в отдельный скрипт файл .bat или .sh);
Это сказано на faq лазаруса. Но у меня все прописано
предлагаю собственно создать разные LPI, содержащие разные параметры для разных типов сборки, но одни и те же исходники.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
hinst
Можно узнать зачем?
Вроде бы никто не мешает оставить их пустыми. В этом случае fpc сам определит под какую архитектуру его нужно собрать, если это не кросскомпиляция
Можно узнать зачем?
Вроде бы никто не мешает оставить их пустыми. В этом случае fpc сам определит под какую архитектуру его нужно собрать, если это не кросскомпиляция
чтобы с удобством использовать LAZBUILD и при этом собирать свой проект для разных платформ
вот же вроде чувак пишет
вот же вроде чувак пишет
Дело в том, что проект кросплатформенный.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
А как вы используете OpenGL? Это компонент или файл с объявлением функций и процедур?
Просто если это компонент, то боюсь что без lazbuild вам не обойтись
Просто если это компонент, то боюсь что без lazbuild вам не обойтись
А как вы используете OpenGL? Это компонент или файл с объявлением функций и процедур?
Просто если это компонент, то боюсь что без lazbuild вам не обойтись
я его подключаю, на форме компорнента нет. Его графический движок подключает и использует.
предлагаю собственно создать разные LPI,
выход, но как-то уже на говнокод тянет. Да и запутаться можно, какая лпи для какой системы. По сути lazarus просто запускает fpc с необходимыми параметрами. вот если бы можно было как-то посмотреть команду которую он вызывает когда ф9 жмешь. Думаю там и можно будет увидеть что он там тайное дописывает.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
я его подключаю, на форме компорнента нет. Его графический движок подключает и использует.
Расшифруйте эту фразу, пожалуйста. Я конечно понимаю, что "ответ программиста точен, но бесполезен" (с) (из старого анекдота).
Все-таки посмотрите файл build.sh из проекта doublecmd, там как раз ваш момент полностью описан
Нашел как и что=)
Вобщем сделал так
- открыл терминал там набрал lazarus-ide. открывается лазарус с моим последним проектом
- нажимаю контрл+ф9
- переключаюсь в консоль и читаю что он там понаписал
может кому еще пригодится.
я моем случае надо было добавить -dLCLgtk2
Вобщем сделал так
- открыл терминал там набрал lazarus-ide. открывается лазарус с моим последним проектом
- нажимаю контрл+ф9
- переключаюсь в консоль и читаю что он там понаписал
может кому еще пригодится.
я моем случае надо было добавить -dLCLgtk2
azatsh писал(а):вот если бы можно было как-то посмотреть команду которую он вызывает когда ф9 жмешь.
В параметрах проекта, нажмите кнопку Показать параметры.
теперь возникла другая проблемма.
если писать вызов непосредственно в терминал то все работает, но если вызывать через
AProcess := TProcess.Create(form1);
AProcess.CommandLine :="бла-бла";
AProcess.Options :=[poWaitOnExit,poUsePipes];
AProcess.Execute;
AProcess.Free;
то не работает
AProcess.Options пробовал разные
если писать вызов непосредственно в терминал то все работает, но если вызывать через
AProcess := TProcess.Create(form1);
AProcess.CommandLine :="бла-бла";
AProcess.Options :=[poWaitOnExit,poUsePipes];
AProcess.Execute;
AProcess.Free;
то не работает
AProcess.Options пробовал разные
