Partilhar via


Macros NMAKE especiais

NMAKE fornece várias macros especiais para representar vários nomes de arquivos e comandos. Um uso para algumas dessas macros é nas regras de inferência predefinidas. Como todas as macros, as macros fornecidas pelo NMAKE diferenciam maiúsculas de minúsculas.

Macros de nome de arquivo

As macros de nome de arquivo são predefinidas como nomes de arquivo especificados na dependência (não especificações completas de nome de arquivo no disco). Essas macros não precisam ser colocadas entre parênteses quando invocadas; Especifique apenas um $ conforme mostrado.

Macro Significado
$@ Nome completo do destino atual (caminho, nome base, extensão), conforme especificado atualmente.
$$@ Nome completo do destino atual (caminho, nome base, extensão), conforme especificado atualmente. Válido apenas como dependente em uma dependência.
$* Caminho do destino atual e nome base menos extensão de arquivo.
$** Todos dependentes da meta atual.
$? Todos os dependentes com um carimbo de data/hora posterior ao destino atual.
$< Arquivo dependente com um carimbo de data/hora posterior ao destino atual. Válido apenas em comandos em regras de inferência.

Para especificar parte de uma macro de nome de arquivo predefinida, acrescente um modificador de macro e coloque a macro modificada entre parênteses.

Modificador Parte resultante do nome do arquivo
D Drive mais diretório
B Nome base
F Nome base mais extensão
R Unidade mais diretório mais nome base

Macros de recursão

Use macros de recursão para chamar NMAKE recursivamente. As sessões recursivas herdam macros de linha de comando e variáveis de ambiente e Tools.ini informações. Eles não herdam regras de inferência definidas por makefile ou especificações .SUFFIXES e .PRECIOUS. Há três maneiras de passar macros para uma sessão NMAKE recursiva:

  • Defina uma variável de ambiente com um comando SET antes da chamada recursiva.
  • Defina uma macro no comando para a chamada recursiva.
  • Ou defina uma macro no Tools.ini.
Macro Definição
MAKE Comando usado originalmente para invocar NMAKE.

A macro $(MAKE) fornece o caminho completo para nmake.exe.
MAKEDIR Diretório atual quando o NMAKE foi invocado.
MAKEFLAGS Opções atualmente em vigor. Use como /$(MAKEFLAGS). A opção /F não está incluída.

Macros de comando e macros de opções

As macros de comando são predefinidas para produtos Microsoft. As macros de opções representam opções para esses produtos e são indefinidas por padrão. Ambos são usados em regras de inferência predefinidas e podem ser usados em blocos de descrição ou regras de inferência definidas pelo usuário. As macros de comando podem ser redefinidas para representar parte ou a totalidade de uma linha de comando, incluindo opções. As macros de opções geram uma cadeia de caracteres nula se deixadas indefinidas.

Ferramenta Macro de comando Definido como Macro Opções
Montador de macros AS ml ou ml64 AFLAGS
Compilador C CC cl CFLAGS
Compilador C++ CPP cl CPPFLAGS
Compilador C++ CXX cl CXXFLAGS
Compilador de recursos RC rc RFLAGS

Macros variáveis de ambiente

NMAKE herda definições de macro para variáveis de ambiente que existem antes do início da sessão. Se uma variável foi definida no ambiente do sistema operacional, ela está disponível como uma macro NMAKE. Os nomes herdados são convertidos em maiúsculas. A herança ocorre antes do pré-processamento. Use a opção /E para fazer com que macros herdadas de variáveis de ambiente substituam quaisquer macros com o mesmo nome no makefile.

As macros de variável de ambiente podem ser redefinidas na sessão, e isso altera a variável de ambiente correspondente. Você também pode alterar variáveis de ambiente com o comando SET. No entanto, usar o comando SET para alterar uma variável de ambiente em uma sessão não altera a macro correspondente.

Por exemplo:

PATH=$(PATH);\nonesuch

all:
    echo %%PATH%%

Neste exemplo, alterar PATH altera a variável de ambiente correspondente PATH; ele acrescenta \nonesuch ao seu caminho.

Se uma variável de ambiente é definida como uma cadeia de caracteres que seria sintaticamente incorreta em um makefile, nenhuma macro é criada e nenhum aviso é gerado. Se o valor de uma variável contiver um cifrão ($), o NMAKE interpreta-o como o início de uma invocação macro. Usar a macro pode causar um comportamento inesperado.

Ver também

Macros e NMAKE