2011-12-28 62 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.';