2009-01-28 12 views
7

me gustaría modificar la cadena en un archivo .h con Nant antes de construir la solución.cómo modificar la fuente con NAnt?

Hay una macro en el archivo .h: #define SERVER_ADDRESS "www.customserver.net" y me gustaría modificar la cadena antes de implementar el software para que cada compilación se pueda hacer para la dirección personalizada pasando la dirección en la línea de comando .

¿alguien sabe cómo esto se podría hacer?

Gracias!

Respuesta

14

Se podría utilizar la tarea loadfile para ayudar con esto. Esta tarea carga el archivo dado en una propiedad. Lo que es realmente útil es cuando se aplica un filterchain con replacetokens sustituir ciertas áreas del archivo. Por ejemplo, si uno tuviera que definir un archivo de cabecera plantilla-como que parecía algo como esto:

#ifndef MyMacros_h 
#define MyMacros_h 

#define SERVER_ADDRESS "@[email protected]" 

#endif 

Se podría el uso de la tarea loadfile para reemplazar el @ SERVER_ADDRESS_TOKEN @ con cualquier cadena, y luego usar el echo tarea para escribir realmente el encabezado real archivo de nuevo.

<loadfile file="MyMacrosTemplate.h" property="theMacrosFileContents"> 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_ADDRESS_TOKEN" value="www.customerserver.net" /> 
     </replacetokens> 
    </filterchain> 
</loadfile> 
<echo file="MyMacros.h" message="${theMacrosFileContents}" /> 

Esto generará un archivo MyMacros.h con la cadena modificada para SERVER_ADDRESS.

0

no creo que esa es la forma correcta de estar utilizando Nant. No me gustaría modificar el contenido del archivo de esa manera. No creo que sea posible.

Tal vez usted puede tener un archivo diferente para cada caso y especificar la ruta de acceso a la misma en función de un parámetro de entrada.

personalmente, creo que cadenas como que no deben ser en forma fija en la aplicación. Si van a cambiar, es mejor que los exteriorice en archivos de configuración o propiedad que se leen al inicio. De esta forma, puede cambiarlos sin tener que cambiar la fuente o volver a compilar.

Cuestiones relacionadas