#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))