2011-12-28 16 views
9

W tej chwili mam 2 platformy (Mac i Win32) i 2 konfiguracje (Debug ans Release). Cała sprawa jest pod SVN.Jak poprawnie skonfigurować wieloplatformowy projekt Delphi XE2?

Oto układ wyjścia build:

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

Kod jest podzielony na kilka folderów i znajduje się tutaj:

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

pliki wspólne dane są tutaj:

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

ten Schemat ma jednak pewne wady, które muszę rozwiązać, ale nie wiem, jak to poprawić. Chcę mieć tylko jeden zestaw plików danych w SVN w folderze Dane, ale muszę go skopiować do .\App\$(Platform)\$(Config) ścieżek automatycznie na kompilacji (uwaga, niektóre pliki danych są wspólne dla obu platform, ale niektóre nie są). Czy istnieje sposób na skonfigurowanie procesu kompilacji w celu skopiowania plików, podobnie jak w przypadku wdrożenia i PAServer? Ewentualnie mogę ustawić ścieżki do plików danych jako ..\..\Data, ale to wydaje mi się dziwne.

Być może jest kilka innych opcji, których nie znam, a układ projektu może zostać całkowicie zmieniony? Jak skonfigurujesz strukturę projektu i zbudujesz kompilację między platformami?

+0

"Pliki zasobów" mają załadowane znaczenie. Większość programistów systemu Windows myśli o skryptach źródłowych (.res) lub ich skompilowanym odpowiedniku (.rc), które są osadzone w pliku wykonywalnym przez linker. AFAIK jest to unikalne dla przenośnego formatu wykonywalnego używanego przez system Windows. Skoro chcesz je skopiować do folderu wyjściowego, czy mogę założyć, że to nie jest to, o czym mówisz? –

+0

Przepraszamy za zamieszanie. Miałem na myśli pliki danych (biblioteki dll, tekstury, modele itp.). Lekko zredagowałem to pytanie. – Kromster

+1

Czy działanie projektu PostBuild nie pomoże? –

Odpowiedz

0

Ok, jest to stary post, ale to, co robię w Delphi (i podobnie w Visual Studio), aby obejść ten problem, mając różne pliki wykonywalne platformy/config w różnych folderach, ale wspólny zestaw danych. Mam funkcję usuwania elementów folderu "sub", wtedy moja aplikacja zawsze może uzyskać dostęp do wspólnych danych w katalogu głównym tych folderów (w twoim przypadku. \ App). Oczywiście możesz dodać kolejne platformy i konfiguracje do funkcji ProjectPath zgodnie z wymaganiami:

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.'; 
Powiązane problemy