Propriedades e variáveis

Tanto propriedades como variáveis podem ser definidas no script FoxMakefile ou podem ser definidas no comando foxmake com as opções "-prop" e "-var".

O que diferencia propriedades de variáveis é que as propriedades são verificadas. Não é possível criar suas próprias propriedades. Você só pode definir propriedades que o foxmake reconhece. Já as variáveis podem ser definidas a seu gosto e ter seu valor utilizado de forma semelhante as propriedades.

As variáveis são definidas, iniciando com $ e, tanto variáveis, quanto propriedades, podem ser acessadas no script com $(nomedavariaveloupropriedade). Veja os exemplos abaixo:

As propriedades são executadas (interpretadas e carregadas) em tempo de interpretação. Assim como as variáveis definidas fora do escopo de alguma definição de task ou procedure.

O foxmake carrega algumas variáveis predefinidas antes do script ser interpretado. São elas:

  • working_dir: Assume o valor do diretório de trabalho.
  • script_file: Assume o valor do caminho do script carregado.
  • os: Assume um valor correspondente ao sistema operacional. Isto é, se é windows ou não.
    A variável "os" pode assumir dois valores: "windows" ou "nowindows".
src.dir=src

$version=1.0
$sysop=linux
$arch=x86

build.dir=build/meuprojeto-$(version)-$(sysop)-$(arch)

echo $(build.dir)
echo $(src.dir)
echo $(sysop)-$(arch)

O script acima define valor para a propriedade src e define três variáveis: $version, $sysop e $arch, que são acessadas na propriedade "build.dir". Logo após, são impressos na saída padrão os valores das propriedades "build.dir" e "src.dir" e, então, impressa a concatenação das variáveis $sysop e $arch, imprimindo: linux-x86.

Agora veja outro exemplo utilizando variáveis predefinidas:

echo $working_dir
echo $script_file
echo $os

O exemplo acima imprime os valores das variáveis predefinidas.

Atenção: Não é permitido alterar valor de variáveis predefinidas. Logo, é inválido fazer conforme a seguir:

$os=linux

Proxima aula

A próxima aula ensina sobre o uso de $ como caractere.