10.6.2 Условные блоки

Макрос %if делает доступными все инструкции вплоть до директивы %endif, если условие выполняется. Эта конструкция подобна сходным конструкциям в любом скриптовом языке. Например:

%if %{old_5x}

%define b5x 1

%undefine b6x

%endif

В этом примере, если макрос %old_5x задан и имеет значение, проверка возвратит true и все команды внутри блока будут выполнены.

%else позволяет задать действия, если тест не успешен. Например:

%if %{old_5x}

%define b5x 1

%undefine b6x

%else

%define b6x 1

%undefine b5x

%endif

В этом случае, если макрос %old_5x имеет значение, все команды до %else будут выполнены. Если %old_5x не задан, будут выполнены команды от %else до %endif.

И вновь, восклицательный знак используется для инверсии проверки:

%if ! %{old_5x}

%define b5x 1

%undefine b6x

%endif

Для вставки в конструкцию логического AND используется &&. Например:

%if %{old_5x} && %{old_6x}

%{error: You cannot build for .5x and .6x at the same time}

%quit

%endif

Далее - Архитектурно-зависимые условия
Назад - Условные макросы
Содержание