2012-06-25 14 views
8

Encontré las siguientes líneas en un tutorial de makefile, pero tengo algún problema con las líneas en negrita.¿Qué significa comodín en makefile?

En la línea 1, si escribo

program_C_SRCS:=$(*.c) 

no funciona. Así que por favor díganme qué es palabra comodín haciendo aquí. ¿Esta palabra es específica solo para el archivo MAKE?

En el tutorial está escrito que la segunda línea realizará la sustitución de la prueba. ¿Alguien puede decirme algo sobre esta sustitución de texto?

Disculpe si mis preguntas son muy básicas porque soy nuevo en la creación de archivos.

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) 

Respuesta

10

Suponga que tiene dos archivos de origen. foo.c y bar.c.

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

La función wildcard es Hacer sintaxis. La variable program_C_SRCS ahora tendrá el valor foo.c bar.c (tal vez no en ese orden).

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

Esto es substitution reference. Transforma el texto, reemplazando una subcadena por otra. La variable program_C_OBJ ahora tiene el valor foo.o bar.o.

1

El uso de la función de tarjeta de comodín en make file es una lista de todos los archivos fuente con una extensión particular. Por ejemplo:

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

Supongamos que si desea convertir archivos a .c.o archivos a continuación, la siguiente sintaxis puede ser útil:

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