Несколько проектов в одном. Условная компиляция

Вопросы программирования и использования среды Lazarus.

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

Ответить
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Несколько проектов в одном. Условная компиляция

Сообщение resident »

Здрасть :)

Проект будет иметь несколько разновидностей (создаются разные классы, используются разные модули, используется разное оформление, данные и т.д.).
Можно ли как-то глобально (для всех модулей) задать директивы компиляции. Но при этом чтобы была возможность компилировать разновидности проекта разными bat-никами через командную строку. Т.е. один раз задать что-то, положить bat-ники на рабочий стол и потом компилировать, щелкая на них.

Вот такой коммунизм нафантазировал. Такое вобще возможно?

Добавлено спустя 1 минуту 20 секунд:
Пока думаю, делать несколько проектов, которые используют свои и многие общие модули. Без всякой условной компиляции.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

как вариант: идёшь в настройки проекта, Параметры компилятора -> Режимы сборки; там создаёшь режимы сколько нужно; потом в Параметры компилятора -> Другие, там есть настройка "Использовать дополнительный файл с настройки компилятора" там для каждого режима прописываешь свой файл, потом в этих файлах пишешь директивы
Про конфигурационные файлы:
http://www.freepascal.org/docs-html/user/userse17.html
Можно много чего ещё интересного сделать; я думаю что удобно для разных "версий" сборки проекта написать "настройки" компиляции в конфигурационных файлах FPC, к тому же, их можно использовать отдельно от лазаруса, только с компилятором

Добавлено спустя 4 минуты:
у лазаруса есть сборщик lazbuild, или как его... если там можно указывать ему в качестве параметра режим сборки, а я почти уверен, что можно, то вот и решение проблемы
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

hinst
Супер! Спасиб, попробую использовать :)
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

Я вот как раз так реализовал автоматическую сборку проекта под разный набор директив компилятора:
Батник для запуска build-all.cmd

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

chcp 1251
set FPC_PATH=C:\lazarus\fpc\2.6.2\bin\i386-win32
for /F "tokens=1,2,3 delims=;" %%i in (debug_keys.csv) do (
  set BuildFolder=%%i
  set DebugKeys=%%j
  set BuildName=%%k
  call build.cmd
)
pause


Батник build.cmd

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

del *.o
del *.ppu
del *.dbg
del *.

C:\lazarus\fpc\2.6.2\bin\i386-win32\fpc C:\Users\1\Documents\Проекты\Lazarus\Whic\2.2.1\whic.lpr  -MObjFPC -Sgh -CX -O1 -Twin32 -g -gl -XX -WG -vewnhi -l -FuC:\lazarus\components\synapse\source\lib -FuC:\lazarus\components\rx\lib\i386-win32 -FuC:\lazarus\lcl\units\i386-win32\win32 -FuC:\lazarus\lcl\units\i386-win32 -FuC:\lazarus\components\lazutils\lib\i386-win32 -FuC:\lazarus\packager\units\i386-win32 -Fu. -vm4055,5024 -dLCL -dLCLwin32 %DebugKeys%

%FPC_PATH%\strip.exe whic.exe

pause

%FPC_PATH%\upx.exe whic.exe  --compress-icons=0
copy whic.exe "%BuildFolder%\whic.exe"
... ...

В файле debug_keys.csv лежат наборы директив для различных вариантов сборок. К примеру, у меня
1;-dpro;Proxies
3;-dpro -ddz;Zones
5;-dpro -dws;Websources
7;-dpro -ddz -dws;Webmaster
9;-dpro -dauto;Auto
11;-dpro -ddz -dauto;Domainer
15;-dpro -ddz -dws -dauto;Full
...
...

При этом батник автоматически рассовывает собранные исполняемые файлы по отдельным папкам (по номерам сборок)
resident
энтузиаст
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Сообщение resident »

Спасиб, похоже то что нужно :)
Аватара пользователя
Tango
постоялец
Сообщения: 162
Зарегистрирован: 31.05.2012 17:07:30

Сообщение Tango »

А у меня в самом верху модулей стоит {$I DefineType.pas}
в нём прописаны разные директивы, а папки разные, а файл один и тот же во всех папках, но разный DefineType.pas.
Ответить