2011-07-21 14 views
11

que tienen una serie de objetivos makefile que hacen lo mismo:funciones en makefiles?

${SOME_FILE}: 
    ${FILES} | ${DIST_DIR} 

    @@cat ${FILES} |      \ 
     sed 's/@DATE/'"${DATE}"'/' |  \ 
     sed 's/@VERSION/'"${CR_VER}"'/' \ 
     > ${OUT_FILE}; 

donde ${FILES} y ${OUT_FILE} son las únicas cosas que cambian. Estoy tratando de averiguar si es posible simplificar estos objetivos a algo como:

${SOME_FILE}: 
    compile(${FILES},${OUT_FILE}) 

Gracias por cualquier idea.

Respuesta

11

GNU make tiene esta:

Para definir una función de varias líneas, se utilizaría la siguiente sintaxis:

+1

Usando definir ... endef no hace nada por mí. Simplemente ignora la línea por completo. Intenté usar $ (var-name) y $ (call var-name). Sin embargo, puedo usar una sola variable de línea y ajustar las líneas con un punto y coma,; y una barra invertida, \. Estoy usando Ubuntu 14.04 y mi versión de GNU es 3.81. – Samuel

1

Si tu no quieres para restringirse a GNUmake, su mejor opción es generar fragmentos de makefiles usted mismo y luego include ellos.