2015-06-11 2 views
0

Я использую gnu make.Как определить переменную, которая есть каждый файл, кроме этого

У меня есть правило, как это:

SOURCES=*.in 

output:$(SOURCES) 
    $(PROCESSOR) -i $(SOURCES) 

Это хорошо работает. Теперь мне нужно исключить один файл test.in из SOURCES, как я должен обновить правило выше?

[UPDATE] На самом деле проблема изменений немного, мне нужно прочитать переменную среды, основанный на его стоимости, я либо принимать все файлы с «.in» в качестве постфикса или исключить test.in.

Не могли бы вы показать мне, как это сделать?

+0

Назовите один файл с другим суффиксом. – twalberg

ответ

0

Используя некоторые из built-in functions:

SOURCES := $(filter-out $(if $(filter val,$(env_var)),test.in),$(wildcard *.in)) 

Если вы хотите, чтобы это применить к этому одному правилу:

output: $(filter-out $(if $(filter val,$(env_var)),test.in),$(SOURCES)) 

где env_var это значение среды, чтобы проверить, и val значение. Если вы хотите частичное совпадение, замените filter на findstr. Вы можете разделить определение на несколько операторов и/или ifeq, если однострочный шрифт слишком загадочен.

+0

Спасибо user657267, я обновил вопрос, не могли бы вы помочь? –

+0

@my_question сделано. – user657267

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