tutorial make hacer for example compilar como comando makefile gnu-make

makefile - hacer - Usando gmake para construir un sistema grande



makefile linux c++ (0)

Estoy trabajando para tratar de corregir / rehacer los archivos MAKE para un sistema heredado, y sigo golpeando mi cabeza contra algunas cosas. Este es un gran sistema de software, que consta de numerosos ejecutables, objetos compartidos y bibliotecas, utilizando C, Fortran y un par de otros compiladores (como el compilador UIL de Motif). Estoy intentando evitar la creación recursiva y preferiría "un archivo MAKE para compilarlos todos" en lugar de la idea existente de "un MAKEFILE por ejecutable / .so / .a". (Llamamos a cada ejecutable, objeto compartido, biblioteca, etc. como una "tarea", así que permítanme usar ese término a medida que avanzo).

El sistema está disperso en toneladas de diferentes subdirectorios de origen, con inclusión generalmente en uno de los 6 directorios principales, aunque no siempre.

¿Cuál sería la mejor manera de lidiar con la plétora de directorios de origen y destino? Preferiría incluir un archivo Task.mk para cada tarea que proporcionaría los detalles específicos de la tarea, pero las variables específicas del objetivo no me dan suficiente control. Por ejemplo, no me permiten cambiar los directorios de origen y destino fácilmente, al menos por lo que he intentado.

Algunas cosas que no puedo ( es decir , no puedo) incluyen:

  • Cambia la estructura del proyecto. Hay muchas cosas que tendrían que cambiarse en todas partes para lograr eso.

  • Use una make diferente. La configuración oficial (que nuestro cliente ha garantizado, por lo que no es necesario tratar con configuraciones desconocidas) utiliza gmake 3.81, punto.