Что означает wildcard в makefile?

Я нашел следующие строки в учебнике makefile, но у меня есть некоторые проблемы с жирными линиями.

в 1 строке, если я пишу

program_C_SRCS:=$(*.c)

он не работает. Поэтому, пожалуйста, скажите, что подстановочное слово здесь. Это слово есть только в Makefile?

в учебнике написано, что вторая строка будет выполнять тестовую подстановку. Кто-нибудь может рассказать мне что-нибудь об этой подстановке текста?

пожалуйста, простите меня, если мой вопросы очень просты, потому что я новичок в создании filestuff.

ссылка на учебник

CC:=g++
program_NAME:=myprogram
**program_C_SRCS:=$(wildcard *.c)**  # 1 line 
program_CXX_SRCS:=$(wildcard *.cc)
**program_C_OBJ:=$(program_C_SRCS:.c=.o)** # 2 line
program_CXX_OBJ:=$(program_CXX_SRCS:.c=.o)
program_OBJ:= $(program_C_OBJ) $(program_CXX_OBJ)

2 ответов


Предположим, у вас есть два исходных файла. foo.c и bar.c.

program_C_SRCS:=$(wildcard *.c) # 1 line

на wildcard функция-синтаксис Make. Переменная program_C_SRCS теперь будет иметь значение foo.c bar.c (возможно не в этом порядке).

program_C_OBJ:=$(program_C_SRCS:.c=.o) # 2 line

это ссылка на замену. Он преобразует текст, заменяя одну подстроку другой. Переменная program_C_OBJ теперь имеет значение foo.o bar.o.


использование функции подстановочного знака в make file-это список всех исходных файлов с определенным расширением. Например:

program_C_SRCS:=$(*.c) // In this the variable program_C_SRCS will have all the files with ".c" extension.

предположим, если вы хотите преобразовать .c файлы .o файлы тогда может быть полезен следующий синтаксис:

program_C_OBJS:=$(patsubst %.c,%.o,$(wildcard *.c))