2017-02-08 15 views
0

Например, у нас есть 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 и сразу увидеть рабочее приложение.

+0

Невозможно выполнить и нет очевидных обходных решений с использованием IDE. Поделитесь этим с помощью компиляции командной строки, чтобы определить переменные условия. –

+0

@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

+0

Компиляция в командной строке отлично работает. Вам просто нужно сделать все правильно. Здесь у вас сложный комплекс. Честно говоря, глупо пытаться строить из IDE. Время, чтобы противостоять этому. –

ответ

0

Один из способов - использовать файл include, который является общим для проектов, и объявить определение там. Один недостаток (если вы так видите) заключается в том, что вам нужно будет использовать include в каждом файле, который должен ссылаться на определение.

Кроме этого, возможно, какой-либо специалист по IDE, который может изменять определения для каждого проекта в группе?