2

Я использую GNU Make и в Makefile, который я имею, я вижу ниже правило. Я хочу добавить подобное правило с рецептом, но когда я добавляю правило и его рецепт на следующей строке, предоставляя вкладку или место для рецепта, я получаю ошибку make.

dummy :
    @echo $(OBJS)

Когда я включил команду vim:set list, я вижу:

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

Что именно представляют символы перед строкой рецепта (вторая строка), которые имеют отступ от начала строки?

Как мне ввести их, используя клавиатуру (без необходимости копировать, вставить правило exisitng и затем изменить его?

Где я могу найти информацию о различных пробелах / отступах, которые будут использоваться при создании Makefile с самого начала, вручную (не make-файл с автоматическим созданием / или другим инструментом, созданным инструментом)?

2 ответа2

7

Рецептам в make-файле должен предшествовать один стандартный символ tab , больше ничего.

^I - представление символа табуляции (см. Таблицу на странице ASCII Википедии), и поэтому это должно быть правильно.

Таким образом, вы должны быть в состоянии ввести его, используя Tab или Ctrl+I.
(при условии, что они не переназначены программным обеспечением)


редактировать

При дальнейшем изучении похоже, что вы можете изменить символ, необходимый для перехода ко всем строкам рецепта на вкладке, установив .RECIPEPREFIX специальная переменная.

Если это значение было определено в вашем make-файле, все рецепты после определения должны использовать этот символ вместо вкладки.

1

После выбора некоторых указателей из ответа, данного DMA57361 выше, и некоторого беспокойства, я заметил, что долгое время назад в моем .vimrc у меня была эта команда, set expandtab (она расширяет табуляции в пробелы), и я использую vim.

Это портило символ табуляции, который я вводил в правилах Makefile. Комментирование этой строки в .vimrc помогло, и оно работает для меня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .