gerador automatico de Makefiles
Publicado por Pedro Robson Leão 11/06/2007
[ Hits: 8.247 ]
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;
Listando processos via /proc/PID
Estrutura de dados: Lista dinâmica duplamente encadeada
Jogo Windows Invaders (com gráficos)
Jogo da Velha com IA invencivel
Nenhum comentário foi encontrado.
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
iso de sistema 32 bit em atividade (13)
Agora temos uma assistente virtual no fórum!!! (247)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (27)