Что означает 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))