2011-12-28 31 views
9

Ngay bây giờ tôi có 2 nền tảng (Mac và Win32) và 2 cấu hình (Debug ans Release). Toàn bộ điều này thuộc về SVN.Cách cấu hình đúng dự án Delphi XE2 đa nền tảng?

Đây là bố trí cho xây dựng đầu ra:

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

Mã này được chia thành vài thư mục và nằm ở đây:

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

tập tin dữ liệu Common đang ở đây:

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

này chương trình có một số sai sót mặc dù, mà tôi cần phải giải quyết, nhưng tôi không biết làm thế nào để làm cho nó tốt hơn. Tôi muốn chỉ có một tập hợp các tập tin dữ liệu trong SVN trong thư mục Data, nhưng tôi cần phải sao chép nó vào .\App\$(Platform)\$(Config) đường dẫn tự động trong xây dựng (lưu ý, một số tập tin dữ liệu phổ biến cho cả hai nền tảng, nhưng một số thì không). Có cách nào để thiết lập quá trình xây dựng để sao chép các tập tin, giống như nó với triển khai và PAServer? Ngoài ra tôi có thể thiết lập đường dẫn đến tập tin dữ liệu như ..\..\Data, nhưng điều đó có vẻ kỳ lạ với tôi.

Có thể có một số tùy chọn khác mà tôi không biết hoặc bố cục dự án có thể được thay đổi hoàn toàn? Làm thế nào bạn sẽ thiết lập cấu trúc dự án và xây dựng để biên dịch nền tảng?

+0

"tệp tài nguyên" có nghĩa được tải. Hầu hết các nhà phát triển cửa sổ nghĩ về các tập lệnh tài nguyên (.res) hoặc tương đương được biên dịch (.rc) của chúng được nhúng vào tệp thực thi bởi trình liên kết. AFAIK này là duy nhất cho định dạng thực thi di động được Windows sử dụng. Vì bạn muốn chúng được sao chép vào thư mục đầu ra, tôi có thể giả định đây không phải là những gì bạn đang đề cập đến? –

+0

Xin lỗi vì nhầm lẫn. Tôi đã đề cập đến các tập tin dữ liệu (dlls, kết cấu, mô hình, vv). Tôi đã chỉnh sửa câu hỏi một chút. – Kromster

+1

Sẽ không có sự trợ giúp hành động PostBuild của dự án? –

Trả lời

7

Sử dụng các hành động Xây dựng bài đăng.

Từ Tùy chọn dự án | Xây dựng sự kiện | Đăng sự kiện | Lệnh

How to setup

Đọc thêm tại

  1. Creating Build Events

  2. Pre and Post-Build Automation in Delphi

+1

+1. Công việc tuyệt vời với hình ảnh và liên kết tham chiếu để hỗ trợ giải pháp được đề xuất. –

0

Ok, đây là một bài cũ, nhưng đây là những gì tôi làm trong Delphi (và tương tự trong Visual Studio) để giải quyết vấn đề này khi có các tệp thi hành đầu ra nền tảng/cấu hình khác nhau trong các thư mục khác nhau, nhưng một tập hợp dữ liệu chung. Tôi có một chức năng để loại bỏ các phần phụ "thư mục", sau đó ứng dụng của tôi luôn có thể truy cập dữ liệu chung trong thư mục gốc của các thư mục này (trong trường hợp của bạn. \ App). Tất nhiên bạn có thể thêm các nền tảng và cấu hình khác vào hàm ProjectPath theo yêu cầu:

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.'; 
Các vấn đề liên quan