Linux: variáveis ​​(ou macros) nos gnu make utilidade

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 regras para a construção de um alvo de seus dependentes.

Video: JDK - Instalando e Configurando Variáveis de Ambiente

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, definindo uma variável ou macro em fazer da seguinte forma:

# 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 fazer variáveis. (GNU faço prefere chamá-los variáveis, mas a maioria Unix faço utilitários chamá-los macros.)

Video: Variáveis de ambiente

Para usar uma variável em qualquer lugar 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 string -O2 -g -mcpu = i686.

GNU make tem várias 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 como 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 novos do que o alvo.
$ @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 os nomes.
Os duplicados são removidos os nomes de ficheiros dependentes.
ARNome do (valor padrão programa de manutenção de arquivo: ar).
ARFLAGSBandeiras para o (valor padrão programa de manutenção de arquivo: rv).
COMONome do programa assembler que converte a montagem
linguagem do código-objeto (valor padrão: Como).
ASFLAGSBandeiras para a 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 (default
valor: co).
COFLAGSBandeiras para a RCS co programa.
CPPNome do pré-processador C (valor padrão: $ (CC) -E).
CPPFLAGSBandeiras para o pré-processador C.
CXXNome do valor compilador (padrão do C ++: 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 é suposto para invocar o
vinculador ld.
RMNome do comando para excluir um arquivo (Valor padrão: -f rm).

Publicações relacionadas