gerador automatico de Makefiles
Publicado por Pedro Robson Leão 11/06/2007
[ Hits: 8.547 ]
Código baseado no genmake original de ma_muquit@fccc.edu;
gera um arquivo makefile automaticamente.
#!/usr/bin/bash VERSION="1.0" EMAIL="ma_muquit@fccc.edu" VER="Makefile automatically generated by genmake $VERSION, `date '+%h-%d-%y'`" DATE=`date +%b-%d-%Y` AUTHOR="genmake $VERSION by $EMAIL" function genGenericMake() { local fname=${3:-"Makefile"}; local opc=${1}; local prog=${2}; local cc=gcc; local dir=; local sharedlibrary=; case ${opc} in "lib") dir="lib"; prog="lib${prog}.a";; "shared") dir="lib"; STRIP=""; prog="lib${prog}.so"; sharedlibrary="-shared";; *) STRIP=""; dir="bin";; esac [ ! -z "${sharedlibrary}" ] && { local machine=$(uname); [ "${machine}" == "SunOS" ] && local sharedlibrary="-G"; } cat >> ${fname} <<EOF ## # ${VER} # ${AUTHOR} # # \$Id: \$ # ## CC= ${cc} AR= ar cq RANLIB= ranlib baseinstall=./ DEFS= PROGDIR=../${dir} PROGNAME= \$(PROGDIR)/${prog} INCLUDES= -I. LIBS= # replace -O with -g in order to debug DEFINES= \$(DEFS) -DSYS_UNIX=1 CFLAGS= -O -Wall ifeq (\$(DEBUG),on) CFLAGS=-g -D__DEBUG__ -O -Wall endif OBJS = ${OBJS} .c.o: @rm -f \$@ \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$*.c all: \$(PROGNAME) install-strip \$(PROGNAME) : \$(OBJS) @rm -f \$@ @mkdir -p \$(PROGDIR) EOF [ "${opc}" != "lib" ] && { cat >> ${fname} <<EOF \$(CC) \$(CFLAGS) ${sharedlibrary} -o \$(PROGNAME) \$(OBJS) \$(LIBS) EOF } [ "${opc}" == "lib" ] && { cat >> ${fname} <<EOF \$(AR) \$@ \$(OBJS) \$(RANLIB) \$@ EOF } cat >> ${fname} <<EOF clean: rm -f \$(OBJS) \$(PROGNAME) core *~ *.ln install-strip: strip install strip: #Strip file ${STRIP}strip \$(PROGNAME) install: #Verify dir file mkdir -p \$(baseinstall) #Copy files cp \$(PROGNAME) \$(baseinstall) EOF } [ ${#} -lt 2 ] && { echo "Use: ${0} [opc <prog|lib|shared>] [prog name] <makefile name>"; exit 0; } STRIP="#"; opc=${1}; prog=${2}; make=${3:-"Makefile"}; OBJS="$( \ls -c1 *.c | tr '\n' ' ')"; OBJS="${OBJS//\.c/.o}"; [ -f ${make} ] && { echo "O arquivo ${make} ja existe"; exit 0; } genGenericMake ${opc} ${prog} ${make}; exit 1;
Funções com número variável de argumentos
Jogo Super Mario Bros 3 (com gráficos)
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Sinto uma leve lentidão ao arrastar, miniminizar e restauras as janela... (3)
Alguém já usou o framework Avalonia para desenvolver interfaces de usu... (4)
Ajuda Pra Melhoria do NFTABLES. (8)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (7)