Например, у нас есть 2 проектные группы - ProjectGroupA.bpg
и ProjectGroupB.bpg
. Каждая группа состоит из модулей EXE и BPL.Как определить директиву компилятора для группы проектов в Delphi 7?
В каждой группе проекта есть такие же проекты Project1.bpl
, Project2.bpl
, Project3.bpl
и различные проекты appA.exe
, Project5.bpl
и appB.exe
, Project6.bpl
, например, так: ProjectGroupA.bpg (проекты exeA-1-2-3-5) и ProjectGroupB.bpg (проекты exeB-1-2-3-6).
В тех же проектах (1, 2, 3) существуют незначительные отличия в функциональности для приложений A и B, которые лучше всего разрешаются с использованием условных определений (например, включая определенные строки внутри bpl или использует разделы).
Вопрос: Как настроить компилятор для группы проектов, так что, когда приложение A будет построено, все модули внутри него будут иметь директиву DEFINE_PROJECT_A
, а при создании приложения B - директиву DEFINE_PROJECT_B
?
В случае, если это невозможно сделать, какие возможные обходные пути для условной компиляции в группе проектов? Сценарий использования - это возможность изменить код на машине разработчиков, нажать F9 и сразу увидеть рабочее приложение.
Невозможно выполнить и нет очевидных обходных решений с использованием IDE. Поделитесь этим с помощью компиляции командной строки, чтобы определить переменные условия. –
@DavidHeffernan В прошлый раз, когда я проверил, компиляция cmd плохо работала в D7 (извините, я не могу вспомнить конкретные детали atm, что-то о путях iirc?). Теперь я изучаю, включая модуль ver.bpl в каждый проект, который называется одним и тем же, но размещается на разных путях ('app_a \ ver.bpl' и' app_b \ ver.bpl'). Тогда каждый bpl может иметь файл 'ver.pas', который может содержать' const my_version = 'A'' или '=' B'' и включать его в каждый проект/модуль, который ему нужен. Тогда я мог бы написать '{$ if my_version = 'A'} ...' – Kromster
Компиляция в командной строке отлично работает. Вам просто нужно сделать все правильно. Здесь у вас сложный комплекс. Честно говоря, глупо пытаться строить из IDE. Время, чтобы противостоять этому. –