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_TEMPLATERemplacez 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/XPour 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.
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 rulesLa 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
| Article | Descriptif |
|---|---|
| IMAKEINCLUDE | Si elle est définie, indique un argument d'inclusion pour le préprocesseur C. Par exemple : |
| IMAKECPP | Si elle est définie, indique un chemin d'accès valide à un programme de préprocesseur. Par exemple :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/XamplesFichiers
| 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. |