Я попытался сделать это как можно проще, исключив такие переменные, как $ (CC) и $ (CFLAGS), которые обычно встречаются в make-файлах. Если вам интересно это выяснить, я надеюсь, что дал вам хорошее начало.
Вот Makefile, который мне нравится использовать для исходного кода C. Не стесняйтесь использовать:
Он использует подстановочные знаки и функции patsubst утилиты make для автоматического включения файлов .c и .h в текущий каталог, то есть при добавлении новых файлов кода в каталог вам не придется обновлять Makefile. Однако, если вы хотите изменить имя сгенерированного исполняемого файла, библиотек или флагов компилятора, вы можете просто изменить переменные.
В любом случае, пожалуйста, не используйте autoconf. Я умоляю тебя! :)
Чтобы быть технически правильным, я считаю, что вы должны использовать .PHONY: clean all defaultдля тех целей, которые предназначены для использования из командной строки. Кроме того, Autoconf / Automake не так уж и плох. Конечно, они ужасны, и привыкнуть к ним так же весело, как пробить голову через кирпичную стену, но они действительно работают, и они хорошо развиты, и они охватят большинство ваших баз, насколько это возможно. и в конце концов они сделают вашу жизнь намного проще, когда вы привыкнете к их ужасному дизайну.
Крис Лутц
Думаю, это работает, но я подумал, что если я наберу «make» на терминале, программа должна запуститься. Вот что я получаю: gcc statsh.o -Wall -lm -o prog Можно ли просто набрать make и запустить программу?
@ user69514: makeбез аргументов обычно только строить свое программное обеспечение. Чтобы запустить его, либо используйте make run(доступно в этом ответе, но не обязательно во всех Makefiles), либо запустите его напрямую:./program
вы можете добавить больше деталей, чтобы объяснить, что делает ваш Makefile
Федерико
2
вы действительно можете пойти намного проще. см. @anonymous 1 лайнер
Марк Лаката
0
В зависимости от количества заголовков и ваших привычек разработки вам может потребоваться изучить gccmakedep. Эта программа проверяет ваш текущий каталог и добавляет в конец make-файла зависимости заголовков для каждого файла .c / cpp. Это перебор, когда у вас есть 2 заголовка и один программный файл. Однако, если у вас есть 5+ маленьких тестовых программ и вы редактируете один из 10 заголовков, вы можете доверять make перестроить именно те программы, которые были изменены вашими модификациями.
Ответы:
Интересно, что я не знал, что make по умолчанию будет использовать компилятор C с учетом правил, касающихся исходных файлов.
В любом случае, простое решение, демонстрирующее простые концепции Makefile, будет:
(имейте в виду, что make требует табуляции вместо отступа пробела, поэтому обязательно исправьте это при копировании)
Однако для поддержки большего количества файлов C вам придется создавать новые правила для каждого из них. Таким образом, для улучшения:
Я попытался сделать это как можно проще, исключив такие переменные, как $ (CC) и $ (CFLAGS), которые обычно встречаются в make-файлах. Если вам интересно это выяснить, я надеюсь, что дал вам хорошее начало.
Вот Makefile, который мне нравится использовать для исходного кода C. Не стесняйтесь использовать:
Он использует подстановочные знаки и функции patsubst утилиты make для автоматического включения файлов .c и .h в текущий каталог, то есть при добавлении новых файлов кода в каталог вам не придется обновлять Makefile. Однако, если вы хотите изменить имя сгенерированного исполняемого файла, библиотек или флагов компилятора, вы можете просто изменить переменные.
В любом случае, пожалуйста, не используйте autoconf. Я умоляю тебя! :)
источник
.PHONY: clean all default
для тех целей, которые предназначены для использования из командной строки. Кроме того, Autoconf / Automake не так уж и плох. Конечно, они ужасны, и привыкнуть к ним так же весело, как пробить голову через кирпичную стену, но они действительно работают, и они хорошо развиты, и они охватят большинство ваших баз, насколько это возможно. и в конце концов они сделают вашу жизнь намного проще, когда вы привыкнете к их ужасному дизайну.rm
: stackoverflow.com/questions/2989465/rm-rf-versus-rm-rfНапример, этого простого Makefile должно быть достаточно:
Обратите внимание, что
<tab>
на следующей строке после очистки и запуска должны быть пробелы, а не пробелы.ОБНОВЛЕНИЕ Комментарии ниже применены
источник
make
без аргументов обычно только строить свое программное обеспечение. Чтобы запустить его, либо используйтеmake run
(доступно в этом ответе, но не обязательно во всехMakefile
s), либо запустите его напрямую:./program
достаточно. остальное неявно
источник
.c
файл,program:
необходим только его. Sweet :)Самый простой make-файл может быть
источник
В зависимости от количества заголовков и ваших привычек разработки вам может потребоваться изучить gccmakedep. Эта программа проверяет ваш текущий каталог и добавляет в конец make-файла зависимости заголовков для каждого файла .c / cpp. Это перебор, когда у вас есть 2 заголовка и один программный файл. Однако, если у вас есть 5+ маленьких тестовых программ и вы редактируете один из 10 заголовков, вы можете доверять make перестроить именно те программы, которые были изменены вашими модификациями.
источник