Como remover espaços à direita da variável makefile?

3

Makefile não requer a vinculação de valores de variáveis por aspas.

Por exemplo, isso será aceito:

a := ls -l -a > out.txt

Meu problema é: se eu quiser fazer algo assim:

a := ls -l -a > out
b := .txt
c := $(a)$(b)

Se o fim da linha da variável $ (a) tiver um espaço em branco, a variável $ (c) ficará assim:

ls -l -a > out .txt 

Com espaço em branco após out !

Isso pode causar erros.

Existe uma maneira de globalmente ignorar os espaços em branco no final da linha de todos os valores de variáveis do makefile?

    
por user1985 23.03.2016 / 18:20

3 respostas

7

Não, não há como alterar a maneira como as definições das variáveis são analisadas. Se você não pode mudar o ponto em que as variáveis estão definidas, você terá que mudar o ponto onde elas são usadas.

Se você está usando o GNU make e os valores das variáveis não devem ter espaço em branco significativo dentro deles, você pode usar o strip function .

c := $(strip $(a))$(strip $(b))
    
por 24.03.2016 / 00:38
-2

O espaço não está no final das linhas - o espaço é antes de .txt.

Isso funciona bem:

a:= ls -l -a >out
b:=.txt
c:=$(a)$(b)

all:
    @echo ${c}

Há também todos os tipos de funções de processamento de texto que você pode usar também ... mas geralmente é "ruim" para tornar as coisas dependentes de "certa quantidade (ou nenhuma) de espaço em branco"

    
por 23.03.2016 / 22:22
-2

Você tem espaço após out . Eu tive o mesmo problema, remova o espaço no final da variável a .

    
por 22.05.2018 / 06:04

Tags