Директива {$define траляля}
Модератор: Модераторы
Директива {$define траляля}
День добрый.
Подскажите по использованию директивы {$define ...}.
Можно её как то расположить что бы она была в одном месте , а то бегать по 20 модулям и менять её как то не камильфо.
Подскажите по использованию директивы {$define ...}.
Можно её как то расположить что бы она была в одном месте , а то бегать по 20 модулям и менять её как то не камильфо.
Re: Директива {$define траляля}
Можно вначале файла указать в [имя проекта].lpr перед всеми uses
другой путь указать в свойствах проекта данный параметр
Добавлено спустя 56 секунд:
http://wiki.freepascal.org/Conditional_compilation
другой путь указать в свойствах проекта данный параметр
Добавлено спустя 56 секунд:
http://wiki.freepascal.org/Conditional_compilation
Re: Директива {$define траляля}
Ещё можно через {$I defines.inc}
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
Re: Директива {$define траляля}
Можно указать компилятору -D..., тогда будут объявлены во всех модулях.
Но если их менять надо, то лучше подход с {$ defines.inc} во всех модулях.
Но если их менять надо, то лучше подход с {$ defines.inc} во всех модулях.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Re: Директива {$define траляля}
Задать директивы компилятора ( {$define ...}) для всего проекта можно в настройках проекта.
Проект => Параметры проекта => Вкладка "Параметры пользователя" => Многострочное поле "Другие". Если Вы прописываете, к примеру, такую переменную в коде {IFDEF $FLAG1}, то в настройках добавьте латинскую букву d в начале, то есть -dFLAG1 или -dDEBUG... Это справедливо как для Ваших пользовательских ключей компиляции, так и используемых самим Lazarus.
Вот тема была viewtopic.php?f=5&t=5044
Набор таких ключей на вкладке пользовательские параметры сохраняется в профиле режима сборки. Таким образом, можно настроить, к примеру, разные версии программы с разными ключами, а при компиляции просто указывать нужный режим сборки с тулбара главного окна
Проект => Параметры проекта => Вкладка "Параметры пользователя" => Многострочное поле "Другие". Если Вы прописываете, к примеру, такую переменную в коде {IFDEF $FLAG1}, то в настройках добавьте латинскую букву d в начале, то есть -dFLAG1 или -dDEBUG... Это справедливо как для Ваших пользовательских ключей компиляции, так и используемых самим Lazarus.
Вот тема была viewtopic.php?f=5&t=5044
Набор таких ключей на вкладке пользовательские параметры сохраняется в профиле режима сборки. Таким образом, можно настроить, к примеру, разные версии программы с разными ключами, а при компиляции просто указывать нужный режим сборки с тулбара главного окна
Re: Директива {$define траляля}
Не хочу создавать новую тему: можно ли в свойствах проекта задать параметры сразу для нескольких (всех) режимов сборки? Полностью раздельные иногда неудобны, настолько, что проще вынести всё в общий .cfg и там разрулить через безусловную общую часть, #ifdef debug, etc., но это как бы аннулирует всю кухню с GUI и хранением параметров в .lpi.
Re: Директива {$define траляля}
Спасибо. Помогло. Через параметры проекта удалось заставить программу собираться так как надо.
- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Re: Директива {$define траляля}
runewalsh писал(а):Не хочу создавать новую тему: можно ли в свойствах проекта задать параметры сразу для нескольких (всех) режимов сборки? Полностью раздельные иногда неудобны, настолько, что проще вынести всё в общий .cfg и там разрулить через безусловную общую часть, #ifdef debug, etc., но это как бы аннулирует всю кухню с GUI и хранением параметров в .lpi.
Не совсем понятна задача. Режимы сборки ведь создаются, чтобы они менялись не так часто. Сначала создаете один режим сборки с наибольшим или полным соответствием тем самым параметрам, которые будут общими для всех или для части Ваших будущих режимов сборки, а потом на основании этого режима создаете остальные режимы сборки... Собственно, всё. Понятно, что просто, ну и скорее всего не то, что Вам требуется, но так Вы задали вопрос...
А еще можно в общем модуле прописать код, в котором будут определятся "сеты"/группы ключей компиляции с помощью меньшего набора ключей компиляции... Может так?
Re: Директива {$define траляля}
Например, в студии можно сделать именно так, как я говорю, хотелось бы то же самое. Там в вопросе и пример, когда это нужно: представь, что у меня куча конфигураций проекта вида (Debug/Release) × (x86/x64) × (CPU/CUDA) × (DLL/Static/Standalone), и однажды мне понадобилось изменить какую-то опцию для всех «CPU».
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Директива {$define траляля}
runewalsh писал(а):и однажды мне понадобилось изменить какую-то опцию для всех «CPU».
Для этого есть в параметрах проекта вкладки "Параметры пользователя" и "Дополнения и перекрытия". Плюс, можно отдельно компилятору добавить опций.
Re: Директива {$define траляля}
А, да, там галочки есть для режимов. Спасибо! :з
Re: Директива {$define траляля}
Это всё работает только пока в Лазаре.
В чистом же фпц надо выносить подобные настройки в отдельный .inc файл.
А потом инклудить этот файл везде {$include moidefainy.inc}
Тогда проект будет лазаренезависимым.
В чистом же фпц надо выносить подобные настройки в отдельный .inc файл.
А потом инклудить этот файл везде {$include moidefainy.inc}
Тогда проект будет лазаренезависимым.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Директива {$define траляля}
Cheb, нельзя иметь слишком многого((
Скорее всего, именно так и поступает сам лазарь. Не забываем, что fpc консольная программа, а значит все настройки проекта надо давать либо в командной строке, либо через специальный сборочный файл (make).
Скорее всего, именно так и поступает сам лазарь. Не забываем, что fpc консольная программа, а значит все настройки проекта надо давать либо в командной строке, либо через специальный сборочный файл (make).
Re: Директива {$define траляля}
в IDE freepascal тоже есть Conditional compilation
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Re: Директива {$define траляля}
olegy123, IDE FPC -- используется редко...фактически, его можно безболезненно выпилить. Да и, собственно, это тоже надстройка. К тому же, не слишком удобная.
