2013-02-21 2 views
0

У меня есть правилоMakefiles явные и неявные правила

*.o: *.c 
    gcc <certain compiler switches> 

Я хотел бы построить несколько * .c файлов с различными коммутаторами компилятора, чем стандартное правило.

Я считаю, что я просто добавить перед первым правилом

foo.o : foo.c 
foobar.o : foobar.c 
    gcc <other compiler switches> 

явное правило обув и Foobar переопределения ли в * .o: * .c правило?

+0

Вы пробовали? Q: Используются ли '<другие компиляторы> для' foo.o', а также 'foobar.o'? – bobbogo

+0

Да, foo.o и foobar.o должны иметь одинаковые ключи компилятора, но отличаются от * .o: * .c. – KeithSmith

ответ

0

В вашем файле makefile есть много проблем. *.o: *.c использует подстановочные знаки оболочки и почти наверняка не то, что вы хотите. Вероятно, вы хотите написать правила шаблонов, используя подстановочные знаки — %.o: %.c. Мне это не нравится (правила шаблонов). Мне всегда нравится быть очень явным в своих make-файлах. Что-то вроде:

SRCS := foo.c foobar.c 
OBJS := ${SRCS:%.c=%.o} 

${OBJS}: %.o: %.c 
    gcc ${OPTS-${@D}} $< -o [email protected] 

Теперь вы можете определить OPTS-foo и OPTS-foobar, как вы считаете нужным.

Смежные вопросы