2015-10-10 1 views
0

Я использую gnu make.Как отфильтровать файл из подстановочных знаков, если среда не установлена ​​

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

MYLIST := $(filter-out $(if $(filter 1,$(exclude_file1)), file1.c),$(wildcard *.c)) 

Он хорошо работает: когда я что отфильтровать «file1.c», я установить переменную окружения, exclude_file1.

Теперь я хочу обратное: когда переменная окружения не установлена, я хочу исключить file1.c.

Не могли бы вы указать мне, какими должны быть изменения?

+1

_It работает хорошо_: уверен в этом? То, что вы написали, вероятно, не то, что вы используете. Вы уверены, что условие '' '' '' '(фильтр 1, $ (exclude_file1))'? В любом случае ответ на ваш вопрос содержится в руководстве GNU make: https://www.gnu.org/software/make/manual/make.html#index-if. 'if' имеет" if true "часть и" if false "часть. –

ответ

0
MYLIST := $(filter-out $(if $(filter undefined,$(origin exclude_file1)),,file1.c),$(wildcard *.c)) 

или

MYLIST := $(filter-out $(if $(filter-out undefined,$(origin exclude_file1)),file1.c),$(wildcard *.c)) 

или

MYLIST := $(filter-out $(if ${exclude_file1},,file1.c),$(wildcard *.c)) 

т.д.

Одним из преимуществ первых двух композиций является то, что они не генерируют сообщение, когда очень полезно --warn-undefined-variables действует.

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