Linux: Variáveis (ou macros) no GNU make Utility
o GNU faço utilidade em Linux vem a seu salvamento por ler e interpretar um makefile. Além da capacidade básica de metas de construção de dependentes, GNU faço inclui muitas características que tornam mais fácil para você expressar as dependências e as regras para a construção de um alvo de seus dependentes.
Se você precisa compilar um grande número de C ++ arquivos usando GCC com as mesmas opções, por exemplo, digitando as opções para cada arquivo é tedioso. Você pode evitar essa tarefa repetitiva através da definição de uma variável ou macro em fazer o seguinte:
# Define macros para o nome de compilerCXX = g ++ # Definir um macro para o GCC flagsCXXFLAGS = -O2 -g -mcpu = i686 # A regra para a construção de uma fileform.o objeto: form.C Form.h $ (CXX) -c $ (CXXFLAGS) form.C
Neste exemplo, CXX e CXXFLAGS são variáveis do make. (GNU faço prefere chamá-los variáveis, mas a maioria Unix faço utilitários chamá-los macros.)
Para utilizar uma variável em qualquer parte do makefile, começar com um sinal de dólar ($) Seguida pela variável dentro de parênteses. GNU make substitui todas as ocorrências de uma variável com o seu definição- assim, ele substitui todas as ocorrências de $(CXXFLAGS) Com a cadeia -O2 -g -mcpu = i686.
GNU make tem diversas variáveis predefinidas que têm significados especiais. Esta tabela lista essas variáveis. Além das variáveis listadas aqui, GNU faço considera todas as variáveis de ambiente (como CAMINHO e CASA) Para ser pré-definidos variáveis bem.
Variável | Significado |
---|---|
$% | nome do membro para alvos que são arquivos. Se o alvo élibDisp.a (image.o), por exemplo, $% é image.o. |
$ * | Nome do arquivo de destino sem a extensão. |
$ + | Nomes de todos os arquivos dependentes com dependências duplicados, listados na sua ordem de ocorrência. |
$ Lt; | O nome do primeiro arquivo dependente. |
$? | Nomes de todos os arquivos dependentes (com espaços entre os nomes) que são mais recentes do que a meta. |
$ @ | nome completo do alvo. Se o alvo é libDisp.a image.o), por exemplo, $ @ é libDisp.a. |
$ ^ | Nomes de todos os arquivos dependentes, com espaços entre as names.Duplicates são retirados dos nomes de arquivos dependentes. |
AR | Nome do programa de manutenção de arquivo (valor padrão: ar). |
ARFLAGS | Bandeiras para o (valor padrão: rv) programa de manutenção de arquivo. |
COMO | Nome do programa assembler que converte a assemblylanguage de oposição (valor padrão: as) de código. |
ASFLAGS | Bandeiras para o montador. |
CC | Nome do compilador C (valor padrão: cc). |
CFLAGS | Bandeiras que são passados para o compilador C. |
CO | Nome do programa que extrai um arquivo de RCS (defaultvalue: co). |
COFLAGS | Bandeiras para o RCS co programa. |
CPP | Nome do C pré-processador (valor padrão: $ (CC) -E). |
CPPFLAGS | Bandeiras para o pré-processador C. |
CXX | Nome do compilador do C ++ (valor padrão: g ++). |
CXXFLAGS | Bandeiras que são passados para o compilador C ++. |
FC | Nome do compilador Fortran (valor padrão: f77). |
fFlags | Bandeiras para o compilador Fortran. |
LDFLAGS | Bandeiras para o compilador quando deveria invocar thelinker ld. |
RM | Nome do comando para excluir um arquivo (Valor padrão: rm -f). |