2015-11-29 2 views
1

Я попытался написать простой make-файл для практики.Makefile: Может ли переменная VPATH применяться для назначения переменной Makefile?

У меня есть два каталога 1. Суданских Красных Полумесяц (.c), 2.include ( .h)

и попытаться определить переменную SRCS, который будет содержать все файлы .c

в текущем каталоге и srcs.

и ниже мой Makefile

CURDIR = $(shell pwd) 
OBJDIR = $(CURDIR)/objdir 
VPATH = $(CURDIR)/srcs 
SRCS = $(wildcard *.c) 
OBJS = $(patsubst %.c, %.o, $(SRCS)) 

all: main 

main: $(OBJS) 
     gcc -o [email protected] $^ 

$(OBJS): $(SRCS) | $(OBJDIR) 
     gcc -c -o [email protected] $< 

$(OBJDIR): 
     mkdir objdir 

обозначает текущую директорию/Src как VPATH, чтобы найти

все * .c файлы в текущем каталоге и текущий/SRCS но

его не может найти файлы * .c в каталоге/srcs.

Может быть сделать не может нас VPATH, когда она определяет переменную в Makefile

правильно? если это правильно, пожалуйста, дайте мне знать лучший подход :)

Спасибо.

ответ

1

VPATH для каталогов make должен искать, чтобы найти необходимые условия.

Не меняется, где $(wildcard) поисков.

VPATH позволяет использовать foo.c (явно или неявно) в пререквизитах списка правила и есть сделать вид в текущем каталоге и VPATH каталогов для файла для него.

Если вы хотите SRCS содержать .c файлы из каталога srcs, то вам необходимо включить srcs/*.c в дополнительном $(wildcard) вызова в SRCS задания.

SRCS = $(wildcard *.c) $(wildcard srcs/*.c) 
Смежные вопросы