Qual é o caractere usado para indentar a receita de regra de arquivo Make?

2

Estou usando o gnu make e em um Makefile que tenho, vejo abaixo a regra. Eu quero adicionar uma regra semelhante com uma receita, mas quando eu adiciono uma regra e sua receita na próxima linha, dando uma tabulação ou espaço para a receita, recebo um erro.

dummy :
    @echo $(OBJS)

Quando eu ligo o comando vim: set list, vejo:

dummy :$
^I@echo $(OBJS)$

O que exatamente são os personagens antes da linha da receita (segunda linha) que a recuam desde o início da linha?

Como eu os insiro usando o teclado (sem ter que copiar e colar a regra existente e depois modificá-la?

Onde eu encontraria informações para vários espaços / recuos a serem usados na criação de um Makefile desde o início, manualmente (não um automake / ou outro makefile criado por uma ferramenta)?

    
por goldenmean 21.12.2010 / 12:44

2 respostas

1

Depois de pegar alguns apontadores da resposta dada pelo DMA57361 acima, e mais alguns mexer, notei que muito tempo atrás no meu .vimrc eu tinha esse comando set expandtab (ele expande as abas em espaços) e uso vim.

Isso estava estragando o caractere de tabulação que eu estava inserindo nas minhas regras do Makefile. Comentando essa linha no .vimrc ajudou e está trabalhando para mim.

    
por 21.12.2010 / 13:26
7

As receitas em um makefile devem ser precedidas por um único caractere padrão tab , nada mais.

^I é a representação do caractere de tabulação (consulte a tabela na página ASCII da Wikipédia), e, portanto, isso deve estar correto.

Portanto, você deve ser capaz de inseri-lo usando a Tab ou Ctrl + I .
(supondo que estes não sejam remapeados pelo software)

Editar

Em uma investigação mais aprofundada, parece que você pode alterar o caractere necessário para preceder todas as linhas de receita de uma guia, definindo o .RECIPEPREFIX variável especial .

Se este valor tiver sido definido em seu makefile, todas as receitas após a definição devem usar esse caractere em vez de uma tabulação.

    
por 21.12.2010 / 13:02

Tags