如何在Delphi7中为项目组定义编译器指令?

如何在Delphi7中为项目组定义编译器指令?,delphi,delphi-7,conditional-compilation,Delphi,Delphi 7,Conditional Compilation,例如,我们有两个项目组-ProjectGroupA.bpgjjProjectGroupB.bpg。每个组由EXE和BPL模块组成 在每个项目组中,都有相同的项目Project1.bpl,Project2.bpl,Project3.bpl和不同的项目appA.exe,Project5.bpl和appB.exe,Project6.bpl,类似于:ProjectGroupA.bpg(projects exeA-1-2-3-5)和ProjectGroupB.bpg(项目exeB-1-2-3-6) 在相同

例如,我们有两个项目组-
ProjectGroupA.bpg
jj
ProjectGroupB.bpg
。每个组由EXE和BPL模块组成

在每个项目组中,都有相同的项目
Project1.bpl
Project2.bpl
Project3.bpl
和不同的项目
appA.exe
Project5.bpl
appB.exe
Project6.bpl
,类似于:ProjectGroupA.bpg(projects 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并立即查看正在工作的应用程序。

一种方法是使用在项目之间共享的包含文件,并在其中声明定义。on缺点(如果您这样看的话)是您需要在每个需要引用定义的文件中使用include


除此之外,也许某个IDE专家可以修改组中每个项目的定义?

无法完成,并且使用IDE没有明显的解决方法。请使用命令行编译来定义不同的条件。@DavidHeffernan上次我检查时,cmd编译在D7中运行不好(对不起,我想不起关于路径iirc的具体细节。现在我正在研究在每个项目中包括一个ver.bpl模块,名称相同,但放置在不同的路径上(
app\u a\ver.bpl
app\u b\ver.bpl
)。然后每个bpl可以有
ver.pas
文件,该文件可以包含
const my_version='A'
或'='B',并将其包含到每个需要它的项目/模块中。然后我可以编写
{$if my_version='A'}…
命令行编译很好。你只需要正确地执行它。你在这里有一个复杂的设置。坦率地说,试图从IDE构建是愚蠢的。是时候正视这一点了。@DavidHeffernan从IDE构建是开发过程的一部分。例如,当我更改一些代码时,我想尽快点击F9查看应用程序,而不是重新构建整个项目组。当然,构建服务器可以按照您建议的方式进行配置,但上一次我花了很多时间,通过cmd实现了这一点。我们现在使用其他方法(FinalBuilder iirc).FinalBuilder调用命令行编译器。它们显然可以使其工作。对于您的开发需要,您必须在每个项目中定义条件。