Как автоматически сгенерировать Makefile в vim (c / c ) очень быстро?

#c #c #vim #makefile #gnu-make

#c #c #vim #makefile #gnu-make

Вопрос:

Я совсем новичок в vim, установил несколько плагинов, одним из которых является snipMate, что весьма полезно при написании короткого Makefile.

 snippet base
    PHONY: clean, mrproper
    CC = gcc
    CFLAGS = -g -Wall

    all: $1

    %.o: %.c        $(CC) $(CFLAGS) -c -o $@ $<

    ${1:OUTPUT_FILENAME}: $1.o
        $(CC) $(CFLAGS) -o $@ $ 

    clean:      rm -f *.o core.*

    mrproper: clean         rm -f $1
  

но все же требуется время, чтобы вручную добавлять имена файлов,
Я совершенно уверен, что с помощью некоторой магии Vim 🙂 Vim сможет сделать это автоматически (выполнив его с помощью горячей клавиши) после того, как я написал эти файлы c, какие-либо предложения?

Спасибо вам всем!

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

1. Вы могли бы перейти на vim stackexchange и спросить там, я думаю, больше шансов на хороший результат.

2. @Hayt, я должен не согласиться. Существуют вполне допустимые подходы, которые на 100% соответствуют gnu-make, если речь идет только о получении нефильтрованного списка каждого файла C в каталоге. Это было бы даже менее громоздким, чем подход Vim, который необходимо выполнять каждый раз при добавлении файла.

3. @LucHermitte да, для этого могут быть подходы gnu-make. Я имел в виду, чтобы люди делали какую-то «vim-магию» в целом, что stackexchange может привести к большему количеству ответов. Никогда не говорил, что это будет не по теме.

4. @Hayt несколько человек и я отвечаем на вопросы vim о vi.SE и так ДАЛЕЕ. Что касается качественных ответов, если некоторые люди закрываются по причине «не по теме» или по какой-либо другой причине, вопросы vim по SO получают ответы.

5. @LucHermitte да, я просто хотел указать, что он также существует в качестве альтернативы. 😉 хотя все еще в бета-версии.

Ответ №1:

Вы можете автоматически извлекать имена файлов с glob() помощью, и globpath() (не спрашивайте меня о синтаксисе snipMate для импорта результата — я поддерживаю другой плагин шаблона / сниппета).

Но если вы всегда используете все автоматически, почему бы вам не сделать это напрямую с помощью make? Существуют способы автоматического объединения имен файлов, соответствующих шаблону. Если вам нужно обрезать файлы, в этом случае имеет смысл явно перечислить каждый файл, который вы хотите сохранить. Но не забывайте удалять ненужные файлы каждый раз, когда вы запускаете действие обновления списка файлов, которое вы хотите определить.

Кстати, IIRC, правильно настроенный gnumake (т.Е. Не mingw) уже имеет правило для %.o: %.c