Author Topic: Utilizar Maven para proyectos en C++  (Read 8224 times)

xprograms

  • Guest
Utilizar Maven para proyectos en C++
« on: Octubre 29, 2007, 04:48:18 pm »
Hola.

Veo que soy el primero en postear este tema,  :)

Estoy tratando de usar maven para un proyecto en VS.NET 2005 escrito en C/C++ y me gustaria  saber si maven da soporte a este lenguaje.

Googleando encontre Nmaven que es una especie de extension para .NET pero que creo que solo es valido para Csharp y VB, actualmente estoy probandolo.

Espero algo de info, please.

Salu2 y gracias anticipadas  ;)


chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Utilizar Maven para proyectos en C++
« Reply #1 on: Octubre 29, 2007, 07:54:06 pm »
Hola:

Que yo sepa, maven por defecto no da ninguna facilidad para C/C++.

Hay plugins y otros maven como el que comentas que sí lo hacen, pero no he probado ni sé en qué estado están.

En el peor de los casos, maven es muy configurable, se pueden llamar tareas de ant, scripts que tú quieras o incluso crearte tus propios plugins. Por ejemplo, si tienes algo similar a make, puedes llamarlo desde maven. Desde luego, requerirá algo de trabajo y debes decidir si compensa o no usar maven al tener que realizar ese trabajo adicional.

Se bueno.


xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #2 on: Octubre 30, 2007, 07:01:36 pm »
Gracias chuidiang por responder.  ;)

He estado mirando y finalmente lo hare usando Ant.

Necesito ayuda para la creacion de un script en ant que compile varios proyectos para plataformas diferentes (Win32, HP, Solaris..). La idea es que el script identifique la plataforma en la que se esta ejecuntando
y compile las librerias necesarias para esa plataforma. Para que ant maneje C++ utilizo las extensiones cpptasks.

Por ejemplo un target que identifique la plataforma en la que estoy y en funcion de esto se llame a otros target para la compilacion en las distintas plataformas.

El temas es que no se que comandos utilizar para obtener el sistema en el que estoy.

No se si me he explicado bien (seguro que no  :-\)

Salu2.



Gracias anticipadas.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Utilizar Maven para proyectos en C++
« Reply #3 on: Octubre 30, 2007, 08:38:55 pm »
Hola:

Dentro del tag <condition> de ant tienes posiblidad de ver el sistema operativo.

Se bueno.

xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #4 on: Noviembre 05, 2007, 04:07:32 pm »
chuidiang, necesito tu ayuda de nuevo.

En el pequeño scriptant que hay mas abajo lo que quiro hacer es que la propiedad "nombreLibreria" cambie su valor para poder llamar al target
con el nombre de la libreria que voy compilar sin tener que ser un nombre estatico.

Por lo que he visto en la documentacion de Ant, el task <property> es invariable, esto explicaria que no cambie su valor.

Seria como crear una especie de variable que me permita darle el valor que me interrese sin condiciones ni nada.

Espero algun consejillo.


Code: [Select]
<project name="probando" default="prueba" basedir=".">

<property name="dir.src" value="${basedir}/src"/>

<property name="nombreLibreria" value="Lib1"/>
<target name="${nombreLibreria}">...</target>

<property name="nombreLibreria" value="Lib2"/>
<target name="${nombreLibreria}">...</target>

</project>



chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Utilizar Maven para proyectos en C++
« Reply #5 on: Noviembre 05, 2007, 05:24:46 pm »
Hola:

No sé, tu pregunta es un poco abstracta. ¿Qué valores quieres dar y en función de qué? Dices que quieres dar distintos valores pero sin poner condiciones. Entonces ¿en función de qué quieres decidir si pones un valor u otro?

Quizás puedas apoyarte en variables de entorno. En el build.xml puedes poner cosas como esta

Code: [Select]
<!-- Desde aqui puedes recoger las variables de entorno -->
<property environment="env"/>
...
<!-- y así puedes asignarlas a propiedades -->
<property name="nombre" value="${env.UNA_VARIABLE_ENTORNO}"

Se bueno.

xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #6 on: Noviembre 05, 2007, 06:33:37 pm »
Se que me explico como fatal.  :-[

Pretendo compilar unos 12 proyectos en c++ con ant.
El codigo fuente de cada proyecto se encuentra en una carpeta con el mismo nombre que ese proyecto.

Por ejemplo el codigo del proyecto Lib1 estara dentro de c:\Lib1\include

La estructura que pretendo que tenga el script es la siguiente

<target name="dameOS">
Aqui consigo saber en la SO en el que corre el script. ESTO FUNCIONA OK.
</target>

<target name="inicializar" depends="dameOS">
Aqui se preparan los compiladores y linkadores, con sus argumentos...,  en funcion del SO en el que corre el scripts. ESTO FUNCIONA OK.
</target>


<property name="dir.src" value="${basedir}/"${nombreLibreria}/include"/>
Declaro una propiedad "dir.scr" que hace referencia a la ruta donde esta el codigo fuente que se va a compilar. Aqui salta mi duda, la ruta en la que esté el codigo para cada proyecto. basedir es una ruta estatica, no cambia en funcion de nada. Sin embargo, nombreLibreria deberia cambiar su valor al nombre de cada libreria para que la ruta sea la correcta.


<target name="Project1" depends="inicializar">
Aqui nombreLibreria deberia tomar el valor "Project1"
para que 'property name="dir.src"' tome la ruta correcta.
</target>

Lo que necesito el cambiar el valor de la propiedad nombreLiberia para que las rutas sean las correctas para cada proyecto.

Salu2 y gracias anticipadas  ;)

xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #7 on: Noviembre 07, 2007, 04:30:22 pm »
El problema anterior ya lo tengo resuelto.

Lo que hice fue crear un .xml para cada proyecto C++ en que se carga un archivo porperties con los rutas necesarias. Ya funciona ok.

Ahora me surge otra duda.

He probado utilizar el task <ant antfile..> para invocar un target que estan en otro archivo .xml diferente al build.xml principal. Esto lo hace correctamente.

Lo que no se como hacer es que se invoque automaticamente un target que dependa de otro que esta en un fichero distinto.

-------------------- ficheroaux.xml --------------------
<target name="release">
.......
</target>

-------------------- Build.xml --------------------
<target name=all depends="release">
.......
</target>

Como podria hacerlo??

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Utilizar Maven para proyectos en C++
« Reply #8 on: Noviembre 07, 2007, 06:49:37 pm »
Hola:

Se me ocurre que en build.xml puedes hacer un target "release" que invoque al otro del ficheroaux.xml

Se bueno.

xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #9 on: Noviembre 07, 2007, 09:21:33 pm »
Chuidiang gracias por contestar de nuevo.

La idea que me das la probe pero el problema es que no se pasan los valores de las properties definidas en el  target "release1" al archivo buid.


-------------------- ficheroaux.xml --------------------
<target name="release1">
.......
</target>

-------------------- Build.xml --------------------
<target name="release">
<ant antfile="rutaarchivo/ficheroaux.xml" dir="rutaarchivo" target="release1"/>
</target>

<target name=all depends="release"></target>

Seguire probando.

Salud  ;)

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Utilizar Maven para proyectos en C++
« Reply #10 on: Noviembre 08, 2007, 02:29:43 am »
Hola:

En la llamada a ant, teóricamente poniendo ineheritsAll=true debería heredar las propiedades.

Se bueno.

xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #11 on: Noviembre 08, 2007, 09:23:08 pm »
Eureka!!!

He encontrado la forma de resolver practicamente todas mis dudas (espero  :-X).
Trasteando di con este super comando con el que podemos hacer invocaciones a target en otros ficheros e incluso pasar parametros de e/s, un flipe, jejej

Code: [Select]
<antcallback antfile="${basedir}/fich_aux.xml" dir="${basedir}" target="target_destino" return="nomLib">
   <param name="nomLib" value="new_nomLib"/>
</antcallback>


Gracias por tus aportaciones chuidiang. ;)

xprograms

  • Guest
Re: Utilizar Maven para proyectos en C++
« Reply #12 on: Noviembre 12, 2007, 07:41:22 pm »
Tengo un problemita, creo que tonto pero que me esta haciendo perder mucho tiempo.

Lo que quiero es acceder al contenido de una variable en funcion del valor de otra interna, seria algo como esto:

${${nomLib}.comp.def1}

El problema es que ${nomLib} se resuelve despues de ${XXXXX.comp.def1}
Y precisamente lo que yo necesito es que primero se resuelva la variable interior para que defina a la exteror, vaya lio no!!

Si alguien me ha entendido que me heche una manita, please

Salud

xprograms

  • Guest
Pasar varios argumentos al compilador
« Reply #13 on: Noviembre 15, 2007, 05:16:28 pm »
Utilizo ant-contrib para pode compilar soluciones en c/c++ pero por lo que he visto para el paso de opciones al compilador solo se puede hacer argumento a argumento.  Me gustaria saber si es posible pasar una linea como argumento en lugar de ir incluyendolos uno a uno.


ahora li tengo asi:
Code: [Select]
<compiler id="VisualC++" name="msvc" if="windows">
     <compilerarg value="-c"/>
     <compilerarg value="-TP"/>
<compiler id="VisualC++" name="msvc" if="windows">

y me gustaria pode hacerlo asi:
Code: [Select]
<compiler id="VisualC++" name="msvc" if="windows">
     <compilerarg line="-c -TP"/>
<compiler id="VisualC++" name="msvc" if="windows">

Salud

BYtE

 

ey