Il s'agit de la commande makedepf90 qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
makedepf90 - crée une liste de dépendances Makefile pour les fichiers source Fortran.
SYNOPSIS
makedepf90 [-h] [-V] [-W|-Wmanquant] [-Wconfuse] [-m fmt] [-u nommodule] [-d filet] [-r
exclure] [-R filet exclure] [-fixé|Sans] [-o nom-de-l'exécutable] [-coco] [-D Nom] [-b chemin]
[-I CHEMIN1:CHEMIN2:...] [-nosrc] fichiers source)
DESCRIPTION
makedepf90 est un programme de création automatique de listes de dépendances et de règles de compilation
pour les Makefiles.
L'idée originale était de fournir la même fonctionnalité pour Fortran que
gcc -MM *.c
fait pour C. De nos jours, makedepf90 remplace cette fonctionnalité, ce qui me fait me demander
si je devais étendre makedepf90 pour prendre également en charge C et C++ ;-).
makedepf90 prend en charge les deux modules, comprennent:s, cpp(1) #comprendre:s, f90ppr(1) $inclure:sable
noix de coco(1) ??comprend et ensemble de fichiers.
makedepf90 lit les fichiers source Fortran donnés sur la ligne de commande et écrit une dépendance
liste vers stdout; pour chaque fichier, il écrit une ligne au format suivant :
objectifs : conditions préalables
Cibles sont les fichiers qui seront le résultat de la compilation du fichier avec le -c option,
et conditions préalables sont des fichiers qui sont nécessaires pour compiler le fichier. En outre, makedepf90
peut éventuellement créer la ligne de dépendance et la règle de fabrication nécessaires pour lier le final
exécutable
Fortran dépendances
Les fichiers nécessaires à la compilation d'un fichier, c'est-à-dire le conditions préalables du fichier sont :
- Le fichier source lui-même
- Fichiers avec des informations d'interface sur les modules USEd, créés par le compilateur pendant
compiler les modules (souvent nommés nommodule.mod ou quelque chose de similaire, ci-après
appelé fichiers-mod).
- Fichiers d'inclusion (y compris les fichiers inclus et les fichiers mod des modules UTILISÉS à partir de ces
fichiers-inclus).
- Coco ensemble-fichiers, si noix de coco(1) est en cours d'utilisation et des fichiers de définition existent.
Étant donné que différents compilateurs utilisent des conventions de nommage différentes pour les fichiers mod, les répertorier
dans la liste des dépendances aboutit à des makefiles non portables. C'est donc une pratique courante
pour lister le fichier objet (nom de fichier.o) correspondant au fichier source contenant le USEd
modules à la place. C'est le comportement par défaut de makedepf90. Pour changer cela, utilisez le -m
option (par exemple -m "%m.mod" si votre compilateur nomme les fichiers mod nommodule.mod)
Inclure les fichiers non trouvés dans le répertoire de travail ne sera pas répertorié dans la dépendance
list, en supposant qu'ils font partie d'une bibliothèque (qui change rarement) ne faisant pas partie du programme.
Les mod-fichiers de modules dont les définitions ne sont pas trouvées ne seront pas non plus répertoriés par le même
raison.
OPTIONS
Ces options peuvent être données n'importe où, dans n'importe quel ordre, sur la ligne de commande. L'espace entre un
option et son argument est facultatif. Les options ne peuvent pas être regroupées (-hW ce n'est pas la même chose
chose comme -h -W).
-h or --Aidez-moi
Imprimez un court message d'aide sur stdout et quittez.
-V or --version
Version imprimable et informations de copyright pour stdout et quitter
-W or -Wmanquant
Imprimer des avertissements sur les modules manquants et inclure des fichiers
-Wconfuse
Imprimer des avertissements en cas de confusion (soit à cause de bogues dans makedepf90 lui-même, soit
à cause de choses étranges dans vos fichiers source). Si makedepf90 en manque
dépendances, ou faire d'autres choses étranges, cette option peut donner une idée de ce qui est
passe.
-m fmt Avertir makedepf90 que les mod-files auront des noms du format fmt. fmt peut contenir
les modificateurs %f pour nom de fichier (sans nom de fichier .suffixe), %m pour nommodule (en
minuscule), %M pour NOM DU MODULE (en majuscule) et %% pour '%'. La valeur par défaut est "%fo".
-u nommodule
Ignorer tous les modules nommés nommodule.
-d filet
Rendre toutes les cibles dépendantes de filet.
-r exclure
Ajoutez des effets de exclure (en retrait par une tabulation) à toutes les lignes de dépendance sauf les lignes pour lesquelles la ou les règles sont données
grâce à la fonction -R option.
exclure may contient les modificateurs suivants : %f pour le nom du fichier source
(sans suffixe) la ligne de dépendance est créée pour, et %% pour '%'.
-R 'modèle' 'régner'
Compiler les fichiers correspondant au modèle de shell modèle en utilisant la règle exclure. En modèle,
les caractères génériques suivants peuvent être utilisés : * = n'importe quel nombre de n'importe quel caractère, ? = n'importe quel
caractère et [abc] = l'un des a, b or c. Notez que le pattern-matching doit être
interprété par makedepf90, pas la coquille. Par conséquent modèle doit être enfermé dans
devis (" or '). Pour L exclure applique les mêmes règles que pour -r au dessus.
Notez qu'il existe une différence subtile entre "-r exclure" et "-R '*' exclure". Dans le
précédent dossier exclure ne sera appliqué qu'aux lignes sans règle utilisant -R, tandis que
Dans le dernier cas, exclure sera appliqué à tous de produits.
-fixé / Sans
Traitez les fichiers comme un format source fixe/libre. Si les deux options sont données, la dernière
est utilisé. Par défaut : fichiers avec des suffixes .F, .F, .pour, .POUR or .ftn sont traités comme
format fixe et .f90, .F90, .f95 or .F95 sont traités en format libre.
-o prénom
Cette option entraînera makedepf90 pour définir la macro Makefile FOBJ=fichiers objets,
et une ligne de dépendance + règle pour le processus de liaison final pour créer l'exécutable
prénom. Pour définir la règle de liaison, utilisez l'option -l.
-l exclure
Utilisez le exclure lors de la liaison de l'exécutable. La valeur par défaut est
$(FC) -o $@ $(FFLAGS) $(LDFLAGS) $(FOBJ) $(LIBS).
Cette option n'a d'effet que si -o est utilisé.
-coco Chercher noix de coco(1) ensemble de fichiers (noix de coco ??include:s sont pris en charge automatiquement). Cette
option implique Sans.
-D Nom
Définir le symbole du préprocesseur Nom.
-b chemin
L'arbre de dépendance et la règle de lien supposeront que les objets sont placés dans chemin. C'est
utile si la construction place les fichiers objets dans un répertoire différent de celui de la source
fichiers.
-I liste-de-chemins
Recherchez les fichiers source/include dans le liste-de-chemins, s'il n'est pas trouvé dans le travail actuel
annuaire. Ici, liste-de-chemins est une liste de noms de chemin séparés par deux points.
-nosrc Ne listez pas le fichier source parmi les prérequis.
EXEMPLES
Basic Utilisation
Voici un exemple de base makedepf90 utilisation avec a prendre une(1). Créer un fichier nommé
Makefile avec le contenu suivant:
----------------------
# FC = le compilateur à utiliser
CF=f90
# Options du compilateur
FFLAGS=-O
# Lister les bibliothèques utilisées par le programme ici
LIBS=
# Règles de suffixe : commencez par jeter tous les anciens suffixes-
# règles, puis en créer de nouvelles pour la compilation
# *.f90-fichiers.
.SUFFIXES :
.SUFFIXES : .f90 .o
.f90.o :
$(FC) -c $(FFLAGS) $
# Incluez la liste de dépendances créée par makedepf90 ci-dessous
inclure .depend
# cible 'clean' pour supprimer l'objet- *.mod- et autres
# fichiers indésirables
nettoyer:
rm -f *.o *.mod noyau
# Créez une liste de dépendances en utilisant makedepf90. Tous les fichiers
# qui doit être compilé pour construire le programme,
# c'est-à-dire que tous les fichiers sources, à l'exception des fichiers d'inclusion, devraient
# être donné sur la ligne de commande à makedepf90.
#
# L'argument de l'option '-o' sera le nom du
# programme résultant lors de l'exécution de 'make', dans ce cas
# 'foobar'
dépend .dépend :
makedepf90 -o foobar *.f90 > .depend
-----------------------
(Notez que toutes les lignes indentées doivent être indentées avec des tabulations, pas des espaces)
Avec ce makefile, la commande a prendre une devrait exécuter toutes les commandes nécessaires pour compiler et
lier le programme Foobar parmi tous les fichiers *.f90 du répertoire de travail.
La liste des dépendances .dépendre sera (re)créé si .dépendre n'existe pas, ou si le
commander a prendre une dépendre est exécuté. Cela devrait être fait chaque fois que des modifications ont été apportées au
programme qui affecte les dépendances des fichiers (par exemple si de nouveaux fichiers sources ont été ajoutés
au projet).
Exemple et Coco
Si vous utilisez un préprocesseur, les choses peuvent devenir plus compliquées. Si tu es chanceux,
votre compilateur prend en charge votre préprocesseur et l'exécute automatiquement sur votre code, mais si
ce n'est pas le cas, vous devez donner les commandes pour exécuter le préprocesseur vous-même. Ci-dessous un
exemple de Makefile pour noix de coco(1)-utilisateurs.
-----------------------
CF=f90
FFLAGS=-O
PRÉPROCESSEUR=coco
.SUFFIXES :
.SUFFIXES : .f .f90 .o
# Les fichiers se terminant par .f90 sont compilés directement...
.f90.o :
$(FC) -c $(FFLAGS) $
# ... tandis que ceux se terminant par .f sont prétraités en premier.
.fo :
$(PRÉPROCESSEUR) $* ; $(FC) -c $(FFLAGS) $*.f90
inclure .depend
nettoyer:
rm -f *.o *.mod noyau
dépend .dépend :
makedepf90 -coco -o foobar *.f90 *.f > .depend
-----------------------
NOTE: Quelques implémentations de a prendre une(1) n'exécutera aucune commande - même pas a prendre une dépendre
— avec les Makefiles ci-dessus sauf s'il existe un fichier nommé .dépendre. Pour surmonter cela
problème, soit exécuter makedepf90 manuellement, ou commencez par créer un vide .dépendre fichier avec
la commande -nous .dépendre.
DIAGNOSTIC
La plupart des messages d'erreur et d'avertissement sont explicites, mais certains d'entre eux peuvent nécessiter
plus d'explications :
AVERTISSEMENT: récursion limite atteint in filet nom de fichier
Lors de l'analyse récursive de fichiers d'inclusion, makedepf90 a atteint la limite de récursivité.
Les raisons possibles sont : soit vous avez des vraiment systèmes complexes d'inclusion
fichiers, ou vous avez des inclusions récursives (par exemple, un fichier d'inclusion qui s'inclut lui-même).
Dans le dernier cas; corrigez-le, votre compilateur Fortran ne l'aimera pas non plus.
Utilisez makedepf90 en ligne en utilisant les services onworks.net