Operadores de pré-processamento de makefile
As expressões de pré-processamento makefile podem usar operadores que agem em valores constantes, códigos de saída de comandos, cadeias de caracteres, macros e caminhos do sistema de arquivos. Para avaliar a expressão, o pré-processador primeiro expande macros, executa comandos para, então, realizar as operações. As operações são avaliadas na ordem do agrupamento explícito entre parênteses, em seguida, na ordem da precedência do operador. O resultado é um valor constante.
O operador DEFINED é um operador lógico que age em um nome de macro. A expressão DEFINED(macroname) será verdadeira se macroname for definido, mesmo que não tenha um valor atribuído. DEFINEDem combinação com !IF ou !ELSE IF é equivalente a !IFDEF ou !ELSE IFDEF. Porém, diferentemente dessas diretivas, o DEFINED pode ser usado em expressões complexas.
O operador EXIST é um operador lógico que age em um caminho do sistema de arquivos. EXIST(caminho) é verdadeiro se caminho existe. O resultado de EXIST pode ser usado em expressões binárias. Se path contiver espaços, coloque-o entre aspas duplas.
Para comparar duas cadeias de caracteres, use o operador de igualdade (==) ou de desigualdade (!=). Coloque as cadeias de caracteres entre aspas duplas.
As constantes de inteiro podem usar os operadores unários na negação numérica (–), no complemento de um (~) e na negação lógica (!).
As expressões podem usar os operadores a seguir. Os operadores de precedência igual são agrupados, e os grupos são listados em ordem decrescente de precedência. Os operadores unários são associados ao operando à direita. Os operadores binários de precedência igual associam operandos da esquerda para a direita.
Operador |
Descrição |
---|---|
DEFINED(macroname) |
Produz um valor lógico para o estado de definição atual de macroname. |
EXIST(path) |
Produz um valor lógico para a existência de um arquivo em path. |
! |
NOT lógico unário. |
~ |
Complemento de um unário. |
- |
Negação unária. |
* |
Multiplicação. |
/ |
Divisão. |
% |
Módulo (pendências). |
+ |
Adição. |
- |
Subtração. |
<< |
Mudança bit a bit para esquerda. |
>> |
Mudança bit a bit para direita. |
<= |
Menor que ou igual a. |
>= |
Maior que ou igual a. |
< |
Menor que. |
> |
Maior que. |
== |
Igualdade. |
!= |
Desigualdade. |
& |
AND bit a bit. |
^ |
XOR bit a bit. |
| |
OR bit a bit. |
&& |
AND lógico. |
|| |
OR lógico. |
Dica
O operador XOR bit a bit (^) é igual ao caractere de escape, e o escape deverá ser feito (como ^^) quando ele for usado em uma expressão.