Makefile процедура

У меня 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-файл для компиляции трех программ с использованием указанных выше параметров и создания трех исполняемых файлов. Я просмотрел кучу руководств и прочитал справочные страницы, поэтому, пожалуйста, не просите меня гуглить. Если бы вы могли дать мне прямой ответ, было бы здорово. Спасибо! :)

По крайней мере, пара из этих флагов избыточна.

Beta 22.04.2018 02:20

Да, наверное, я просто так делаю, потому что нас попросили скомпилировать со всеми этими флагами.

Hyuga Hinata 22.04.2018 02:32

Stack Overflow - это не сервис для написания кода. Пожалуйста, покажите свой код. Поскольку переполнение стека скрывает от вас причину закрытия: Вопросы, требующие помощи по отладке («почему этот код не работает?»), Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный, полный и проверяемый пример.

jww 22.04.2018 03:42

Не читайте учебники: я редко видел те, которые не содержат ошибок или, по крайней мере, дезинформации. Страницы руководства обычно представляют собой страницы Справка, которые требуют, чтобы вы имели базовое понимание, а затем предоставляли вам детали, которые вы, возможно, забыли. Вам следует прочитать руководство GNU make: gnu.org/software/make/manual/html_node/index.html

MadScientist 22.04.2018 14:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
182
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, это сработает:

CC := /usr/bin/gcc
CFLAGS += -pthread -O2 -fmessage-length=0 -pedantic-errors # and so on

.PHONY: all
all: abc pqr xyz

Большое спасибо, это сработало! Не могли бы вы объяснить, что здесь происходит? Что такое PHONY? Почему в некоторых примерах упоминается rm, clean?

Hyuga Hinata 22.04.2018 02:28

@Sheetal - Если вы читаете справочные страницы, то знаете, что делает PHONY.

jww 22.04.2018 03:52

@SheetalKrishna: .PHONY: сообщает Make, что правило all на самом деле не создает файл с именем "all". Можно написать правила, которые делают другие полезные вещи, например, стирают с листа. У Make долгая кривая обучения.

Beta 22.04.2018 16:16

Другие вопросы по теме