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.

Algumas variáveis ​​pré-definidas em GNU make
VariávelSignificado
$%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.
ARNome do programa de manutenção de arquivo (valor padrão: ar).
ARFLAGSBandeiras para o (valor padrão: rv) programa de manutenção de arquivo.
COMONome do programa assembler que converte a assemblylanguage de oposição (valor padrão: as) de código.
ASFLAGSBandeiras para o montador.
CCNome do compilador C (valor padrão: cc).
CFLAGSBandeiras que são passados ​​para o compilador C.
CONome do programa que extrai um arquivo de RCS (defaultvalue: co).
COFLAGSBandeiras para o RCS co programa.
CPPNome do C pré-processador (valor padrão: $ (CC) -E).
CPPFLAGSBandeiras para o pré-processador C.
CXXNome do compilador do C ++ (valor padrão: g ++).
CXXFLAGSBandeiras que são passados ​​para o compilador C ++.
FCNome do compilador Fortran (valor padrão: f77).
fFlagsBandeiras para o compilador Fortran.
LDFLAGSBandeiras para o compilador quando deveria invocar thelinker ld.
RMNome do comando para excluir um arquivo (Valor padrão: rm -f).

menu