Commande imake

Objectif

Interface de préprocesseur C de la commande Faire .

Syntaxe

imake [ -DDéfinir ] [ -IRépertoire ] [ -TModèle ] [ -f FileName ] [ -C FileName ] [ -s FileName ] [ -e ] [ -v ]

Descriptif

La commande Imake génère Fichiers makefiles à partir d'un modèle, d'un ensemble de fonctions de macros cpp et d'un fichier d'entrée par répertoire appelé Fichier Imakefile. Cette commande permet de séparer les dépendances de machine (telles que les options de compilation, les noms de commande alternatifs et les règles de commande Faire spéciales) des descriptions des éléments à générer.

Imake appelle cpp avec tous les indicateurs -I ou -J transmis sur la ligne de commande et lui transmet les trois lignes suivantes:

#define IMAKE_TEMPLATE "Imake.tmpl"
#define INCLUDE_MAKEFILE "Imakefile"
#include IMAKE_TEMPLATE

Remplacez Imake.tmpl et Imakefile par les indicateurs -T et -f , respectivement.

Le fichier IMAKE_TEMPLATE lit généralement les fichiers suivants:

  • Fichier de paramètres dépendant de la machine dans lequel les paramètres sont spécifiés en tant que symboles cpp
  • Un fichier de paramètres spécifiques au site
  • Un fichier qui définit les variables
  • Un fichier contenant des fonctions de macro cpp pour la génération de règles de commande Faire
  • Fichier Imakefile (indiqué par INCLUDE_IMAKEFILE) dans le répertoire en cours.

Le fichier Fichier Imakefile utilise les fonctions de macro pour indiquer les cibles à générer et la commande Imake génère les règles appropriées.

Les fichiers de configuration d'Imake contiennent deux types de variables, des variables d'imake et des variables. Les variables d'imake sont interprétées par cpp lorsque la commande Imake est exécutée. Par convention, ils ne sont pas sensibles à la casse. Les variables make sont écrites dans Fichier makefile pour une interprétation ultérieure par la commande Faire . Par convention, les variables sont majuscules.

Le fichier de règles (généralement nommé Imake.rules dans le répertoire de configuration) contient diverses fonctions macro cpp configurées en fonction de la plateforme en cours. La commande Imake remplace toutes les occurrences de la chaîne ` ` @ @ '' par un caractère de nouvelle ligne (retour chariot) Pour prendre en charge des macros qui génèrent plus d'une ligne de règles d'exécution. Par exemple, la macro:

#define   program_target(program, objlist)        @@\
program:  objlist                                 @@\
          $(CC)  -o  $@  objlist  $(LDFLAGS)
  

Lorsqu'il est appelé avecprogram_target(foo,foo1.o foo2.o)Va s'étendre à:

foo:      foo1.o  foo2.o
          $(CC)  -o  $@  foo1.o  foo2.o  $(LDFLAGS)

Sur les systèmes dont le cpp réduit plusieurs tabulations et espaces à un seul espace, la commande Imake tente de remettre tous les onglets nécessaires (la commande Faire fait la distinction entre les onglets et les espaces). Pour cette raison, précéde tous les deux-points (:) dans les lignes de commande par une barre oblique inversée (\).

Utiliser avec

AIXwindows utilise la commande Imake de manière extensive pour les générations complètes dans l'arborescence source et les générations de logiciels externes. Deux variables spéciales, TOPDIR et CURDIR, sont définies pour faciliter le référencement des fichiers à l'aide des noms de chemin relatifs. Par exemple, la commande suivante est générée automatiquement pour générer le fichier Fichier makefile dans le répertoire Lib/X (par rapport à la partie supérieure des sources):

%  ../.././config/imake  -I../.././config  \
             -DTOPDIR=../../.  -DCURDIR=./lib/X

Pour construire des programmes AIXwindows en dehors de l'arborescence des sources, un symbole spécial, UseInstalled, est défini et les variables TOPDIR et CURDIR sont omises. Si les fichiers de configuration sont correctement installés, vous pouvez utiliser la commande Xmkmf .

La commande Imake lit les fichiers suivants, utilisés par AIXwindows.

Remarque: Le format en retrait indique les fichiers qui contiennent d'autres fichiers.
Imake.tmpl                  generic variables
   site.def                 site-specific, BeforeVendorCF defined
         *.cf               machine-specific
             *Lib.rules     shared library
   site.def                 site-specific, AfterVendorCF defined
   Imake.rules              rules
   Project.tmpl             X-specific variables
         *Lib.tmpl          shared library variables
Imakefile
   Library.tmpl             library rules
   Server.tmpl              server rules
   Threads.tmpl              multi-thread rules
Remarque: Le fichier site.def est inclus deux fois, avant et après le fichier *.cf . Bien que la plupart des personnalisations de site soient spécifiées après le fichier *.cf , certaines, telles que le choix du compilateur, doivent être spécifiées avant, car d'autres paramètres de variable peuvent dépendre d'eux.

La première fois que le fichier site.def est inclus, la variable BeforeVendorCF est définie, et la deuxième fois, la variable AfterVendorCF est définie. Tout le code du fichier site.def doit être placé dans une macro #ifdef pour l'un de ces symboles.

Indicateurs

Article Descriptif
-JDéfinir Transmis directement à cpp pour définir des variables spécifiques au répertoire. Par exemple, X-windows utilise cet indicateur pour définir la variable TOPDIR sur le nom du répertoire contenant le haut de la distribution principale, et la variable CURDIR sur le nom du répertoire en cours, par rapport à la partie supérieure.
-e Indique que la commande Imake doit exécuter le fichier Fichier makefilegénéré. La valeur par défaut est de laisser cette valeur à l'utilisateur.
-f FileName Indique le nom du fichier d'entrée par répertoire. La valeur par défaut est le fichier Fichier Imakefile .
-IRépertoire (Uppercase i) Transmis directement à cpp pour indiquer le répertoire dans lequel se trouvent le modèle d'image et les fichiers de configuration.
-C FileName Indique le nom du fichier .c qui est construit dans le répertoire en cours. La valeur par défaut est Imakefile.c.
-s FileName Indique le nom du fichier de description Faire à générer, sans appeler la commande Faire . Si la variable FileName est un - (tiret), la sortie est écrite dans stdout. La valeur par défaut est de générer, mais pas d'exécuter, un Fichier makefile.
-TModèle Indique le nom du fichier modèle maître (généralement situé dans le répertoire spécifié avec-I ) Utilisé par la commande Cpp . La valeur par défaut est Imake.tmpl.
-v Indique que Imake doit imprimer la ligne de commande Cpp qu'il utilise pour générer le fichier Fichier makefile.

Variables d'environnement

Remarque: Les variables d'environnement suivantes peuvent être définies, mais leur utilisation n'est pas recommandée car elles introduent des dépendances qui ne sont pas évidentes lorsque la commande Imake est exécutée.
Article Descriptif
IMAKEINCLUDE Si elle est définie, indique un argument d'inclusion pour le préprocesseur C. Par exemple :
-I/usr/include/local 
IMAKECPP Si elle est définie, indique un chemin d'accès valide à un programme de préprocesseur. Par exemple :
/usr/local/cpp

La valeur par défaut est le programme /lib/cpp .

IMAKEMAKE Indique un chemin d'accès valide à un programme make tel que /usr/local/make. Par défaut, Imake utilise le programme Faire qui se trouve à l'aide de la sous-routine Execvp . Cette variable est utilisée uniquement si l'indicateur-E est spécifié.

Exemple

imake -I/usr/lib/X11/config -DTOPDIR=/usr/lpp/X11/Xamples

Fichiers

Article Descriptif
/usr/tmp/tmp-imake. nnnnnn Indique le fichier d'entrée temporaire du préprocesseur cpp.
/usr/tmp/tmp-make. nnnnnn Indique le fichier d'entrée temporaire à effectuer.
/lib/cpp Le préprocesseur C par défaut.