2012-06-25 2 views
8

Я нашел следующие строки в учебнике make-файла, но у меня есть некоторые проблемы с жирными линиями.Что означает подстановочный знак в make-файле?

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

program_C_SRCS:=$(*.c) 

это не работает. Поэтому, пожалуйста, скажите мне, что такое подстановочное слово здесь. Является ли это слово специфичным только для файла makefile?

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

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

link of tutorial

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) 

ответ

10

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

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

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

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

Это substitution reference. Он преобразует текст, заменяя одну подстроку на другую. Переменная program_C_OBJ теперь имеет значение foo.o bar.o.

1

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

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)) 
Смежные вопросы