【问题标题】:select library for package in project为项目中的包选择库
【发布时间】:2018-06-04 13:22:17
【问题描述】:

我有一个使用某个库的包。 在我的一个项目中,我想选择包是否使用这个库。

我的第一次尝试是在项目级别使用 DEFINE,然后在包中使用 {$IFDEF },但显然这只适用于(已定义)项目本身,不适用于使用的包。 -> 这是正确的吗?

我可以拆分包对象 - 一个使用库,一个不使用库 - 但如果有不同的库组合可供选择,这不是很实用。 -> 你有更好的建议吗?

编辑:我希望包是“多平台”的,除了一些依赖于 VCL/win 的功能

【问题讨论】:

  • 包决定它使用哪个库。一旦编译完成,您将无法更改它。似乎您正在寻找插件系统之类的东西。
  • 您可能需要单独的软件包。条件控制在编译时包含哪些代码,但一旦编译完成,它就永远存在。
  • @JerryDodge 我想在“项目编译”时控制它。我想没有这样的事情?
  • 因为在项目编译过程中包没有被改变 - 没有。
  • @UweRaabe 插件系统,你的意思是像加载一个DLL?我希望有一些轻松的东西......

标签: delphi


【解决方案1】:

编译的包永远不会独立于平台,它们总是为一个特定的平台编译。

但是通过编译器定义,您可以在为特定平台编译包时指定编译哪些代码。

因此,当您创建了正确的 IFDEF 语句后,然后为每个平台编译包(到不同的文件夹)并为您正在部署主要可执行文件的每个平台部署正确的版本(您还为此编译了不同的可执行文件)。

【讨论】:

  • 问题是我无法从项目中控制 DEFINE
  • 但没有必要这样做,因为在编译包时会评估定义。但是要记住的最重要的一点是,您需要为每个平台编译包,因此也需要将不同的目标平台添加到包中。
  • 我希望在编译项目时对其进行评估,但显然定义系统并没有达到那么远......
  • 您说得对,当您编译“项目”时,不会根据您为主“项目”选择的平台“重新编译”包。但是当您在项目上方(在项目组中)添加包时,您可以通过右键单击项目组并选择“全部构建”以正确的顺序编译它们。 (注意:确保首先为包和项目选择了正确的平台)。
  • 是的,但似乎没有办法根据当前项目“禁用”某些功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
相关资源
最近更新 更多