У меня 3 программы abc.cpqr.c и xyz.c Я компилирую это так:
/usr/bin/gcc -pthread -O2 -fmessage-length=0 -pedantic-errors -std=gnu99 -Werror -Wall -Wextra -Wwrite-strings -Winit-self -Wcast-align -Wcast-qual -Wpointer-arith -Wstrict-aliasing -Wformat=2 -Wmissing-include-dirs -Wno-unused-parameter -Wshadow -Wuninitialized -Wold-style-definition filename.c -o filename
Я хочу написать make-файл для компиляции трех программ с использованием указанных выше параметров и создания трех исполняемых файлов. Я просмотрел кучу руководств и прочитал справочные страницы, поэтому, пожалуйста, не просите меня гуглить. Если бы вы могли дать мне прямой ответ, было бы здорово. Спасибо! :)
Да, наверное, я просто так делаю, потому что нас попросили скомпилировать со всеми этими флагами.
Stack Overflow - это не сервис для написания кода. Пожалуйста, покажите свой код. Поскольку переполнение стека скрывает от вас причину закрытия: Вопросы, требующие помощи по отладке («почему этот код не работает?»), Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный, полный и проверяемый пример.
Не читайте учебники: я редко видел те, которые не содержат ошибок или, по крайней мере, дезинформации. Страницы руководства обычно представляют собой страницы Справка, которые требуют, чтобы вы имели базовое понимание, а затем предоставляли вам детали, которые вы, возможно, забыли. Вам следует прочитать руководство GNU make: gnu.org/software/make/manual/html_node/index.html





Думаю, это сработает:
CC := /usr/bin/gcc
CFLAGS += -pthread -O2 -fmessage-length=0 -pedantic-errors # and so on
.PHONY: all
all: abc pqr xyz
Большое спасибо, это сработало! Не могли бы вы объяснить, что здесь происходит? Что такое PHONY? Почему в некоторых примерах упоминается rm, clean?
@Sheetal - Если вы читаете справочные страницы, то знаете, что делает PHONY.
@SheetalKrishna: .PHONY: сообщает Make, что правило all на самом деле не создает файл с именем "all". Можно написать правила, которые делают другие полезные вещи, например, стирают с листа. У Make долгая кривая обучения.
По крайней мере, пара из этих флагов избыточна.