2015-03-12 6 views
2

У меня есть два набора исходных файлов в моем проекте, из которых мне нужно создать объектные файлы.Применить отдельные флаги при компиляции подмножества источников

SET_ONE = foo.o bar.o 
SET_TWO = zerz.o zork.o 

Я хочу передать добавить дополнительный параметр к CFLAGS при создании файлов в SET_ONE, но не для тех, кто в SET_TWO. Например, я хочу:

> make -n 
cc -c -DEXTRA_FLAG foo.c 
cc -c -DEXTRA_FLAG bar.c 
cc -c zerz.c 
cc -c zork.c 
... 

Поскольку файлы имеют такое же расширение, то же самое правило относится ко всем из них, и я не вижу простой способ подправить CFLAGS для только те, в одном из наборы.

Я мог бы сделать пользовательские правила для файлов в SET_ONE:

foo.o : foo.c 
    $(CC) $(CFLAGS) -DEXTRA_FLAG foo.c 

bar.o : bar.c 
    $(CC) $(CFLAGS) -DEXTRA_FLAG bar.c 

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

ответ

3

Существует несколько способов сделать это. Наиболее простой использует target-specific variables; добавить в ваш файл:

$(SET_ONE): CFLAGS += -DEXTRA_FLAG 
Смежные вопросы