Для чего нужна Makefile Target `.c.o`? - PullRequest
26 голосов
/ 10 февраля 2012

Кто-то недавно упомянул цель .c.o в Makefiles для кросс-совместимости, но я не понимаю ее цели. Кто-нибудь может уточнить?

Ответы [ 2 ]

33 голосов
/ 10 февраля 2012

Это старомодное суффиксное правило . Более современный способ сделать это - использовать шаблонное правило :

%.o : %.c
2 голосов
/ 10 февраля 2012

Это стандартное правило для перевода .c файлов, т.е. модулей C, в .o объектные файлы. Он существует, так что вам не нужно писать это правило самостоятельно, и он параметризован переменными Make, такими как CC (используется компилятор C), CFLAGS (флаги компилятора) и т. Д.

Итак, если вы используете это неявное правило для компиляции модулей C и не возитесь с какими-либо переменными Make, то человек, создающий ваш код, может указать компилятор и флаги в командной строке, не редактируя Makefile.

...