Partilhar via


Macros NMAKE especiais

O NMAKE fornece várias macros especiais para representar diversos nomes de arquivo e comandos. Um uso para algumas dessas macros está 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 enclosed (colocadas) entre parênteses quando invocadas; especifique apenas um $ conforme mostrado.

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

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

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

Macros de recursão

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

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

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

Macros de comando e macros de opções

As macros de comando são predefinidas para produtos da Microsoft. As macros de opções representam opções para esses produtos e são indefinidas por padrão. Ambas são usadas em regras de inferência predefinidas e podem ser usadas 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 toda a linha de comando, including (inclusive) as opções. As macros de opções geram uma cadeia de caracteres nula se não forem definidas.

Ferramenta Macro de comando Definido como Macro de opções
Macro Assembler AS ml ou ml64 AFLAGS
Compilador C CC cl CFLAGS
Compilador C++ CPP cl CPPFLAGS
Compilador C++ CXX cl CXXFLAGS
Compilador de Resource (Recurso) RC rc RFLAGS

Macros de variável de ambiente

O NMAKE herda definições de macro para variáveis de ambiente que existiam antes do início da sessão. Se uma variável foi definida no ambiente do sistema operacional, ela estará disponível como uma macro do NMAKE. Os nomes herdados são convertidos em uppercase (letras maiúsculas). A herança ocorre antes do pré-processamento. Use a opção /E para fazer com que as macros herdadas de variáveis de ambiente substituam todas as 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, o uso do 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, a alteração de PATH altera a variável de ambiente correspondente PATH; ela acrescenta \nonesuch ao seu caminho.

Se uma variável de ambiente for definida como uma cadeia de caracteres que seria sintaticamente incorreta em um makefile, nenhuma macro será criada e nenhum aviso será gerado. Se o valor de uma variável contiver um sinal de dólar ($), o NMAKE o interpretará como o início de uma invocação de macro. O uso da macro poderá causar um comportamento inesperado.

Confira também

Macros e NMAKE