【问题标题】:How to define compiler directive for a project group in Delphi 7?如何在 Delphi 7 中为项目组定义编译器指令?
【发布时间】:2017-06-26 00:31:57
【问题描述】:

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

在每个项目组中都有相同的项目Project1.bplProject2.bplProject3.bpl和不同的项目appA.exeProject5.bplappB.exeProject6.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.bplapp_b\ver.bpl)。然后每个 bpl 可以有 ver.pas 文件,该文件可以包含 const my_version = 'A' 或 `='B'` 并将其包含到每个需要它的项目/模块中。然后我可以写{$if my_version = 'A'} ...
  • 命令行编译工作正常。你只需要做对。你在这里设置了一个复杂的设置。坦率地说,尝试从 IDE 构建是愚蠢的。是时候面对这一点了。
  • @DavidHeffernan 从 IDE 构建是开发过程的一部分。例如。当我更改一些代码时,我想按 F9 并尽快查看应用程序,而不是重建整个项目组。当然可以按照您建议的方式配置构建服务器,但是上次我花了很多时间并通过 cmd 来完成它。我们现在使用其他方法(FinalBuilder iirc)。
  • FinalBuilder 调用命令行编译器。他们显然可以让它发挥作用。为了您的开发需求,您必须在每个项目中定义条件。

标签: delphi delphi-7 conditional-compilation


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多