«Отрицание» переменной в make-файле - PullRequest
3 голосов
/ 25 марта 2011

Я пытаюсь использовать функцию if (в отличие от одного из условных операторов) в GNU make, чтобы добавить слово в список, если конкретная переменная не определено В итоге я оставил второй аргумент пустым, указав третий аргумент, например:

FOO := baz $(if $(BAR),,quux)

Это выглядит нормально, но выглядит немного глупо. Есть ли какой-то простой, встроенный способ делать то, что я хочу? Я мог бы определить свою собственную функцию not, но

FOO := baz $(if $(call not,$BAR),quux) 

на мой взгляд, не так уж и много улучшений.

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

Я бы пошел по этому пути:

ifndef BAR
FOO +=quux
endif

или если пустая строка имеет значение "не определено", то:

ifeq ($(BAR),)
FOO +=quux
endif
1 голос
/ 25 марта 2011

Согласно документам :

Первый аргумент, условие, сначала удаляет все предшествующие и конечные пробелы, затем расширяется.Если он расширяется до любой непустой строки, то условие считается истинным.Если он расширяется до пустой строки, условие считается ложным.

Поэтому вопрос заключается в том, как сделать так, чтобы определенная переменная давала пустую строку, а неопределенная переменная давалапустая строка.

Вы можете сделать это, например, используя filter функцию в сочетании с origin функцией ($(if $(filter undefined,$(origin BAR)),quux)), но это даже уродливеечем два примера, которые вы предоставляете ^ _ ^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...