Вопрос про директивы компилятора

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

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

Ответить
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

Мне надо , чтобы при OC Win32 в uses использовался один модуль, при Linux - другой. И ещё вопрос- как определить ОС на лету? Заранее спасибо.
Sniper
постоялец
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение Sniper »

а типа ifdef/ifndef отменили уже? ))
Аватара пользователя
Alexander
энтузиаст
Сообщения: 875
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

С помощью {$IFDEF LINUX} {$IFDEF UNIX} {$IFDEF WINDOWS} ... {$ENDIF}

А уж что между ними вставлять дело вкуса. Uses или const os = 1(2,3...) ........
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

badaninslava
Кстати, вариант - это положить юниты с одинаковыми именами в разные папки, а пути выставлять в зависимости от системы... можно прямо в fpc.cfg
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

{$IFDEF LINUX} MainForm.Caption:='LINUX'; {$ENDIF}
{$IFDEF WINDOWS} MainForm.Caption:='WINDOWS';{$ENDIF}
Не работает... Почему?
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

{$IFDEF WINDOWS} MainForm.Caption:='WINDOWS';{$ENDIF WINDOWS}
{$IFDEF LINUX} MainForm.Caption:='LINUX'; {$ENDIF LINUX}
Тоже не помогает...
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

badaninslava
Кстати, вариант - это положить юниты с одинаковыми именами в разные папки, а пути выставлять в зависимости от системы... можно прямо в fpc.cfg


И ещё- можно ли в модуле использовать другой, модуль, расположенный в другой директории? Если да, то как ?

{Я имею ввиду если не править fpc.cfg}
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

О, а

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

{$IFDEF LINUX} MainForm.Caption:='LINUX'; {$ENDIF}
{$IFDEF MsWindows} MainForm.Caption:='WINDOWS';{$ENDIF}

сработало!!!

Ну так можно ли в модуле использовать другой, модуль, расположенный в другой директории? Если да, то как ?

Если не править fpc.cfg.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

Ну так можно ли в модуле использовать другой, модуль, расположенный в другой директории? Если да, то как ?

указать его в разделе uses модуля

Если не править fpc.cfg.

если компиляция из командной строки и путь к модулю не указан в fpc.cfg, то надо добавить ключ -Fuкаталог_модуля

если в Lazarus, то где-то в меню можно пути добавить
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

указать его в разделе uses модуля

А в каком формате? У меня всё не получается... :(
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

badaninslava писал(а):
указать его в разделе uses модуля

А в каком формате? У меня всё не получается... :(

А? :blink:

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

uses имя_модуля,...;
badaninslava
постоялец
Сообщения: 101
Зарегистрирован: 12.12.2005 00:21:44

Сообщение badaninslava »

uses имя_модуля,...;

Например модуль a.pas находится в поддиректории ..B\ текущего проекта.
Как мне к нему обратиться из прочего модуля? {Не из проектного файла.}
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

badaninslava писал(а):
uses имя_модуля,...;

Например модуль a.pas находится в поддиректории ..B\ текущего проекта.
Как мне к нему обратиться из прочего модуля? {Не из проектного файла.}

В раздел uses прочего модуля добавить a. Каталог ..B\ добавить одним из перечисленных выше способов.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 875
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

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

uses str in './s/str.pas';
Ответить