2011-12-28 24 views
9

Ahora tengo 2 plataformas (Mac y Win32) y 2 configuraciones (Debug ans Release). Todo está bajo SVN.¿Cómo configurar correctamente un proyecto multiplataforma Delphi XE2?

Aquí es el diseño para la salida de construcción:

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

El código se divide en varias carpetas y encuentra aquí:

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

archivos de datos comunes están aquí:

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

Este Sin embargo, el esquema tiene ciertos defectos que debo resolver, pero no sé cómo hacerlo mejor. Quiero tener solo un conjunto de archivos de datos en SVN en la carpeta Datos, pero necesito copiarlos automáticamente en las compilaciones .\App\$(Platform)\$(Config) en compilación (tenga en cuenta que ciertos archivos de datos son comunes para ambas plataformas, pero algunos no). ¿Hay alguna manera de configurar el proceso de compilación para copiar los archivos, como lo hace con Deployment y PAServer? Alternativamente, podría configurar rutas a los archivos de datos como ..\..\Data, pero eso me parece extraño.

¿Quizás hay otras opciones que no conozco o el diseño del proyecto podría cambiarse por completo? ¿Cómo configuraría la estructura del proyecto y la compilación para la compilación multiplataforma?

+0

"archivos de recursos" tiene un significado cargado. La mayoría de los desarrolladores de Windows piensan en los scripts de recursos (.res) o sus equivalentes compilados (.rc) que el vinculador incorpora al ejecutable. AFAIK esto es exclusivo del formato ejecutable portátil utilizado por Windows. Como quieres copiarlos a la carpeta de salida, ¿puedo asumir que no es a lo que te refieres? –

+0

Perdón por la confusión. Me refería a los archivos de datos (dlls, texturas, modelos, etc.). He editado la pregunta un poco. – Kromster

+1

¿No será útil la acción PostBuild del proyecto? –

Respuesta

7

Utilice las acciones de creación de publicaciones.

De Opciones de proyecto | Desarrollar eventos | Eventos de post compilación | Los comandos

How to setup

lecturas adicionales al

  1. Creating Build Events

  2. Pre and Post-Build Automation in Delphi

+1

+1. Buen trabajo con las imágenes y enlaces de referencia para apoyar la solución sugerida. –

0

Ok, esto es una entrada antigua, pero esto es lo que hago en Delphi (y de manera similar en Visual Studio) para evitar el problema de tener los diferentes archivos ejecutables de salida de plataforma/configuración en diferentes carpetas, pero un conjunto común de datos. Tengo una función para quitar las partes de la carpeta "sub", luego mi aplicación siempre puede acceder a los datos comunes en la raíz de estas carpetas (en su caso. \ App). Por supuesto, puede agregar más plataformas y configuraciones a la función ProjectPath según sea necesario:

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.'; 
Cuestiones relacionadas