2011-12-28 64 views
9

现在我有2个平台(Mac和Win32)和2个配置(Debug ans Release)。整个事情是在SVN下。如何正确配置跨平台的Delphi XE2项目?

这里是生成输出布局:

.\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)路径上自动生成(注意,某些数据文件对于这两种平台都是通用的,但有些不是)。有没有办法设置构建过程来复制文件,就像使用Deployment和PAServer一样?或者我可以设置数据文件的路径为..\..\Data,但这看起来很奇怪。

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

+0

“资源文件”具有加载的含义。大多数Windows开发人员都会考虑链接器嵌入到可执行文件中的资源脚本(.res)或其编译的等效项(.rc)。 AFAIK这对于Windows使用的可移植可执行格式来说是独一无二的。既然你希望他们复制到输出文件夹,我可以认为这不是你所指的? – 2011-12-28 17:10:26

+0

对不起,感到困惑。我指的是数据文件(dll,纹理,模型等)。我已经稍微编辑了这个问题。 – Kromster 2011-12-29 04:40:59

+1

项目PostBuild行动不会有帮助吗? – 2012-01-02 21:04:44

回答

0

好进一步阅读,这是一个老帖子,但是这是我在Delphi做(和Visual Studio中类似)来解决这个问题,即在不同的文件夹中有不同的平台/配置输出可执行文件,而是一组常见的数据。我有一个功能去掉“sub”文件夹部分,然后我的应用程序可以随时访问这些文件夹根目录中的常用数据(在你的情况下。\ 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.';