+ Responder ao Tópico



  1. #1

    Padrão Awk dentro do make - Ajuda!

    Pessoal, preciso de uma ajudinha!
    Sempre trabalhei no Unix, e agora estou tentando portar pro Linux, várias coisas.
    Estou reconfigurando todos os meus Makefiles e estou com uma dificuldade enorme de usar o comando awk dentro dele. Vou colocar meu comando aqui como exemplo para facilitar.
    No Makefile do Unix eu usava assim:

    CSW_PROJ:sh = echo `pwd | xargs dirname | xargs dirname |xargs basename` | nawk -F"_" '{ printf $1 }'

    E no Linux eu estava tentando usar assim:

    CSW_PROJ:= $(shell echo `pwd | xargs dirname | xargs dirname |xargs basename` | nawk -F"_" '{ printf $1 }')

    Mas não tá rolando. Ele retorna este erro:
    nawk: cmd. line:1: (FILENAME=- FNR=1) fatal: printf: no arguments

    O comando sozinho funciona e retorna o que eu quero. Mas dentro do Makefile com shell não! =[

    Outro exemplo:
    REF_BASE:=$(shell pwd | awk -F/ '{print $2}')

    ele só faz o pwd, e ignora oq tem dps do pipe... mas pelo menos não retornou erro. =/

    Já procurei todo o tipo de informação pra tentar fazer isso funcionar mas n achei nada que me ajudasse. Consegui arranjar um método alternativo usando cut, mas tem outros comandos no meu Makefile que preciso adicionar coisas no print. Precisaria mto usar o awk, e n sei pq não funciona!! Alguém tem alguma idéia?

    Valeu!!

  2. #2

    Padrão

    Galera, me virei!

    É só colocar mais um $ no pârametro. Senão o Make entender que $1 é parâmetro do próprio make, e não do awk:

    REF_BASE:=$(shell pwd | awk -F/ '{print $$2}')

    ou dá pra usar o cut:

    REF_BASE:=$(shell pwd | cut -d / -f2)

    []'s