【问题标题】:How to properly configure a cross-platform Delphi XE2 project?如何正确配置跨平台的 Delphi XE2 项目?
【发布时间】:2012-01-28 23:48:03
【问题描述】:

现在我有 2 个平台(Mac 和 Win32)和 2 个配置(调试和发布)。整个事情都在SVN之下。

这是构建输出的布局:

.\App\$(Platform)\$(Config)

代码分为几个文件夹并位于此处:

.\Code\MyProject.dpr
.\Code\Common\
.\Code\Forms\
.\Code\Source\

常用数据文件在这里:

.\Data\ custom data files (dlls, textures, models, etc.)

这个方案虽然有一些缺陷,我需要解决,但我不知道如何使它变得更好。我希望在 Data 文件夹下的 SVN 中只有一组数据文件,但我需要在构建时自动将其复制到 .\App\$(Platform)\$(Config) 路径(注意,某些数据文件对于两个平台都是通用的,但有些不是)。有没有办法设置构建过程来复制文件,就像部署和 PAServer 一样?或者,我可以将数据文件的路径设置为..\..\Data,但这对我来说很奇怪。

也许还有一些我不知道的其他选项,或者项目布局可以完全改变?您将如何设置项目结构并构建以进行跨平台编译?

【问题讨论】:

  • “资源文件”有一个加载的含义。大多数 Windows 开发人员会考虑由链接器嵌入到可执行文件中的资源脚本 (.res) 或其已编译的等效文件 (.rc)。 AFAIK 这是 Windows 使用的可移植可执行格式所独有的。既然您希望将它们复制到输出文件夹,我可以假设这不是您所指的吗?
  • 很抱歉造成混淆。我指的是数据文件(dll、纹理、模型等)。我稍微编辑了这个问题。
  • 项目 PostBuild 操作没有帮助吗?
  • 制定了一些截图和进一步阅读链接作为答案。

标签: delphi delphi-xe2 project-organization


【解决方案1】:

使用 Post Build 操作。

来自项目选项 |构建事件 |构建后事件 |命令

进一步阅读

  1. Creating Build Events

  2. Pre and Post-Build Automation in Delphi

【讨论】:

  • +1。图片和参考链接很好地支持了建议的解决方案。
【解决方案2】:

好的,这是一篇旧文章,但这是我在 Delphi 中所做的(在 Visual Studio 中也是如此),以解决在不同文件夹中具有不同平台/配置输出可执行文件但一组通用数据的问题.我有一个功能可以剥离“子”文件夹部分,然后我的应用程序始终可以访问这些文件夹根目录中的公共数据(在您的情况下为 .\App)。当然,您可以根据需要向函数 ProjectPath 添加更多平台和配置:

uses System.StrUtils;
...
function ProjectPath : string;
// Removes sub-folders created by the Delphi IDE, so the executable can refer to the source folder,
// rather than to where the executable is.
// Excludes trailiong path delimiter
begin
  Result := ExtractFilePath (Application.ExeName);
  Result := System.StrUtils.ReplaceText (Result, '\Win32'  , '');    // ReplaceText is case insensitive
  Result := System.StrUtils.ReplaceText (Result, '\Win64'  , '');
  Result := System.StrUtils.ReplaceText (Result, '\Debug'  , '');
  Result := System.StrUtils.ReplaceText (Result, '\Release', '');
  Result := ExcludeTrailingPathDelimiter (Result);
end;
...
ConnectionString := 'Database=' + ProjectPath +'\DATAFILE.DAT;etc.';

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多