Добавить строку между переменными для GNU Make

#windows #makefile #gnu

#Windows #makefile #gnu

Вопрос:

У меня есть это

 SRC = file1.c file2.c file3.c
  

Как мне превратить это в

 file1.c   file2.c   file3.c
  

Самое близкое, что я могу получить, это (обратите внимание на знак » » в конце)

 file1.c   file2.c   file3.c  
  

используя

 SRC2 := $(SRC:.c=.c  )
  

Комментарии:

1. Для чего вам нужен между именами файлов? Вы хотите SRC = file1.c file2.c file3.c ?

2. Необходимо объединить содержимое файла с помощью простой команды копирования Windows. copy /b file1.c file2.c file3.c output.bin

Ответ №1:

Вот один из способов сделать это:

 SRC=abc def ghi
SRC2=$(word 1,$(SRC))$(foreach f,$(wordlist 2,99999,$(SRC)),   $(f))
all:
        @echo $(SRC2)
  

То есть удалите первое слово, затем безоговорочно добавьте каждое дополнительное слово с префиксом » «.

Вот еще один, работает, только если вы уверены, что у вас есть ровно один пробел между каждым словом в SRC .

 EMPTY=
SPACE=$(EMPTY) $(EMPTY)
SRC=abc def ghi
SRC2=$(subst $(SPACE), $(SPACE) $(SPACE),$(SRC))
all:
        @echo $(SRC2)
  

На этот раз идея состоит в том, чтобы заменить один символ пробела последовательностью пробел плюс пробел. Убедитесь, что у вас нет пробела между запятой и $(SRC) !

Комментарии:

1. Спасибо, оба решения работают. Я нашел другой способ. SRC2 = $(subst .c,.c ,$(subst $(lastword $(SRC)),,$(SRC)))$(lastword $(SRC))