Страница 1 из 2
		
			
				Директива {$define траляля}
				
Добавлено: 
04.05.2017 05:45:06 DYUMON
				День добрый.
Подскажите по использованию директивы   {$define ...}.
Можно её как то расположить что бы она была в одном месте , а то бегать по 20 модулям и менять её как то не камильфо.
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
04.05.2017 06:33:04 olegy123
				Можно вначале файла указать в [имя проекта].lpr перед всеми uses
другой путь указать в свойствах проекта данный параметр
Добавлено спустя 56 секунд:http://wiki.freepascal.org/Conditional_compilation 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
04.05.2017 12:58:55 Дож
				Ещё можно через {$I defines.inc}
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
04.05.2017 16:17:40 Mirage
				Можно указать компилятору -D..., тогда будут объявлены во всех модулях.
Но если их менять надо, то лучше подход с {$ defines.inc} во всех модулях.
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
04.05.2017 23:53:11 Ichthyander
				Задать директивы компилятора ( {$define ...}) для всего проекта можно в настройках проекта.
Проект => Параметры проекта => Вкладка "Параметры пользователя" => Многострочное поле "Другие". Если Вы прописываете, к примеру, такую переменную в коде {IFDEF $FLAG1}, то в настройках добавьте латинскую букву d в начале, то есть -dFLAG1 или -dDEBUG... Это справедливо как для Ваших пользовательских ключей компиляции, так и используемых самим Lazarus.
Вот тема была 
viewtopic.php?f=5&t=5044Набор таких ключей на вкладке пользовательские параметры сохраняется в профиле режима сборки. Таким образом, можно настроить, к примеру, разные версии программы с разными ключами, а при компиляции просто указывать нужный режим сборки с тулбара главного окна
 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 00:29:24 runewalsh
				Не хочу создавать новую тему: можно ли в свойствах проекта задать параметры сразу для нескольких (всех) режимов сборки? Полностью раздельные иногда неудобны, настолько, что проще вынести всё в общий .cfg и там разрулить через безусловную общую часть, #ifdef debug, etc., но это как бы аннулирует всю кухню с GUI и хранением параметров в .lpi.
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 05:12:36 DYUMON
				Спасибо. Помогло. Через параметры проекта удалось заставить программу собираться так как надо.
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 08:36:07 Ichthyander
				runewalsh писал(а):Не хочу создавать новую тему: можно ли в свойствах проекта задать параметры сразу для нескольких (всех) режимов сборки? Полностью раздельные иногда неудобны, настолько, что проще вынести всё в общий .cfg и там разрулить через безусловную общую часть, #ifdef debug, etc., но это как бы аннулирует всю кухню с GUI и хранением параметров в .lpi. 
Не совсем понятна задача. Режимы сборки ведь создаются, чтобы они менялись не так часто. Сначала создаете один режим сборки с наибольшим или полным соответствием тем самым параметрам, которые будут общими для всех или для части Ваших будущих режимов сборки, а потом на основании этого режима создаете остальные режимы сборки... Собственно, всё. Понятно, что просто, ну и скорее всего не то, что Вам требуется, но так Вы задали вопрос...
А еще можно в общем модуле прописать код, в котором будут определятся "сеты"/группы ключей компиляции с помощью меньшего набора ключей компиляции... Может так?
 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 09:34:32 runewalsh
				Например, в студии можно сделать 
именно так, как я говорю, хотелось бы то же самое. Там в вопросе и пример, когда это нужно: представь, что у меня куча конфигураций проекта вида (Debug/Release) × (x86/x64) × (CPU/CUDA) × (DLL/Static/Standalone), и однажды мне понадобилось изменить какую-то опцию для всех «CPU».
 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 09:45:02 Лекс Айрин
				runewalsh писал(а):и однажды мне понадобилось изменить какую-то опцию для всех «CPU».
Для этого есть в параметрах проекта  вкладки "Параметры пользователя" и "Дополнения и перекрытия". Плюс, можно отдельно компилятору  добавить опций.
 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 11:05:10 runewalsh
				А, да, там галочки есть для режимов. Спасибо! :з
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 11:45:16 Cheb
				Это всё работает только пока в Лазаре.
В чистом же фпц надо выносить подобные настройки в отдельный .inc файл.
А потом инклудить этот файл везде {$include moidefainy.inc}
Тогда проект будет лазаренезависимым.
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
05.05.2017 13:01:08 Лекс Айрин
				Cheb, нельзя иметь слишком многого((
Скорее всего, именно так и поступает сам лазарь. Не забываем, что fpc консольная программа, а значит все настройки проекта надо давать либо в командной строке, либо через специальный сборочный файл (make).
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
06.05.2017 00:09:28 olegy123
				в  IDE freepascal тоже есть Conditional compilation
			 
			
		
			
				Re: Директива {$define траляля}
				
Добавлено: 
06.05.2017 09:31:05 Лекс Айрин
				olegy123, IDE FPC -- используется редко...фактически, его можно безболезненно выпилить. Да и, собственно, это тоже надстройка. К тому же, не слишком удобная.