Компилирование из командной строки

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

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

Компилирование из командной строки

Сообщение azatsh » 27.10.2010 19:50:28

пишу на 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 что-то еще передает. Как-то объявляет дефайны
azatsh
новенький
 
Сообщения: 33
Зарегистрирован: 20.07.2010 10:14:04

Re: Компилирование из командной строки

Сообщение alexs » 27.10.2010 20:10:28

azatsh
Открой для себя LazBuild - все сразу будет хорошо.
http://freepascal.ru/article//lazarus/20090224211328/
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Компилирование из командной строки

Сообщение azatsh » 27.10.2010 20:17:34

Данная утилита предназначена для удобной сборки готовых проектов, написанных в Lazarus без запуска самой IDE. Возможность существования этой утилиты обеспечивается тем фактом, что в файле проекта (*.lpi) или пакета (*.lpk) находится информация о зависимостях от других библиотек, которые необходимы для сборки нашего проекта или пакета. Также в файлах проекта находится информация обо всех файлах, которые входят в проект и месте их нахождения.

Дело в том, что проект кросплатформенный. поэтому мне нужно компилировать не читая эти файлы.
У меня под виндами все отлично работает а вот линуксе проблемма возникла
azatsh
новенький
 
Сообщения: 33
Зарегистрирован: 20.07.2010 10:14:04

Re: Компилирование из командной строки

Сообщение zub » 27.10.2010 20:29:03

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 
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Компилирование из командной строки

Сообщение Padre_Mortius » 27.10.2010 22:32:28

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

Re: Компилирование из командной строки

Сообщение azatsh » 28.10.2010 17:22:21

Как собирать 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 лазаруса. Но у меня все прописано
azatsh
новенький
 
Сообщения: 33
Зарегистрирован: 20.07.2010 10:14:04

Re: Компилирование из командной строки

Сообщение hinst » 28.10.2010 20:21:57

предлагаю собственно создать разные LPI, содержащие разные параметры для разных типов сборки, но одни и те же исходники.
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Компилирование из командной строки

Сообщение Padre_Mortius » 28.10.2010 21:40:37

hinst
Можно узнать зачем?
Вроде бы никто не мешает оставить их пустыми. В этом случае fpc сам определит под какую архитектуру его нужно собрать, если это не кросскомпиляция
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Компилирование из командной строки

Сообщение hinst » 28.10.2010 22:28:40

чтобы с удобством использовать LAZBUILD и при этом собирать свой проект для разных платформ
вот же вроде чувак пишет
Дело в том, что проект кросплатформенный.
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Компилирование из командной строки

Сообщение Padre_Mortius » 28.10.2010 23:16:34

А как вы используете OpenGL? Это компонент или файл с объявлением функций и процедур?
Просто если это компонент, то боюсь что без lazbuild вам не обойтись
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Компилирование из командной строки

Сообщение azatsh » 29.10.2010 10:37:04

А как вы используете OpenGL? Это компонент или файл с объявлением функций и процедур?
Просто если это компонент, то боюсь что без lazbuild вам не обойтись

я его подключаю, на форме компорнента нет. Его графический движок подключает и использует.
предлагаю собственно создать разные LPI,


выход, но как-то уже на говнокод тянет. Да и запутаться можно, какая лпи для какой системы. По сути lazarus просто запускает fpc с необходимыми параметрами. вот если бы можно было как-то посмотреть команду которую он вызывает когда ф9 жмешь. Думаю там и можно будет увидеть что он там тайное дописывает.
azatsh
новенький
 
Сообщения: 33
Зарегистрирован: 20.07.2010 10:14:04

Re: Компилирование из командной строки

Сообщение Padre_Mortius » 29.10.2010 10:57:49

я его подключаю, на форме компорнента нет. Его графический движок подключает и использует.

Расшифруйте эту фразу, пожалуйста. Я конечно понимаю, что "ответ программиста точен, но бесполезен" (с) (из старого анекдота).
Все-таки посмотрите файл build.sh из проекта doublecmd, там как раз ваш момент полностью описан
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Компилирование из командной строки

Сообщение azatsh » 29.10.2010 11:05:13

Нашел как и что=)
Вобщем сделал так
- открыл терминал там набрал lazarus-ide. открывается лазарус с моим последним проектом
- нажимаю контрл+ф9
- переключаюсь в консоль и читаю что он там понаписал

может кому еще пригодится.

я моем случае надо было добавить -dLCLgtk2
azatsh
новенький
 
Сообщения: 33
Зарегистрирован: 20.07.2010 10:14:04

Re: Компилирование из командной строки

Сообщение Mr.Smart » 29.10.2010 11:11:55

azatsh писал(а):вот если бы можно было как-то посмотреть команду которую он вызывает когда ф9 жмешь.

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

Re: Компилирование из командной строки

Сообщение azatsh » 29.10.2010 14:47:48

теперь возникла другая проблемма.
если писать вызов непосредственно в терминал то все работает, но если вызывать через
AProcess := TProcess.Create(form1);
AProcess.CommandLine :="бла-бла";
AProcess.Options :=[poWaitOnExit,poUsePipes];
AProcess.Execute;
AProcess.Free;

то не работает

AProcess.Options пробовал разные
azatsh
новенький
 
Сообщения: 33
Зарегистрирован: 20.07.2010 10:14:04

След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 3

Рейтинг@Mail.ru