Tempo de interpretação e tempo de execução
As propriedades e variáveis definidas fora do escopo de definição de tasks e procedures são executadas (interpretadas) durante a interpretação o script. Já tudo que está dentro das procedures e definições de tasks (incluíndo atribuições a variáveis) é executado em tempo de execução. Isto é, durante a execução do bloco de definição de task ou procedure.
Para utilizar ifs fora dos blocos de definição de tarefas e procedures, é necessário utilizar a diretiva if que deve ser utilizada em maiuscula: IF, ENDIF. Ifs (em minusculo) são instruções executadas em tempo de execução e o que está fora dos blocos de definição de tarefas e procedures é executado em tempo de interpretação.
Veja os exemplos abaixo:
IF os != "windows"
test.linker.params=-ldl -rdynamic
ENDIF
O código acima executa (em tempo de interpretação) uma diretiva IF que verifica se o sistema operacional é diferente de "windows" e, se for, seta o valor da propriedade "test.linker.params". Agora veja o exemplo abaixo:
if os != "windows" then
test.linker.params=-ldl -rdynamic
endif
O exemplo acima gera um erro. Isso porque as propriedades são executadas (interpretadas e carregadas) em tempo de interpretação e o if é executado em tempo de execução. Isto é, o if, neste caso, só é executado após todas as tarefas, onde, os comandos definidos no script fora de qualquer bloco de definição de tarefas ou procedure são executados. Para o exemplo acima funcionar, é necessário utilizar diretivas IF ao invés de comandos if.
Proxima aula
A próxima aula ensina sobre diretivas if.