Plusieurs fois, man 1 ident
a été mentionné, donc voici des détails sur l'utilisation de cette méthode.
ident
est une commande fournie avec RCS (Revision Control System), mais peut également être disponible si vous utilisez CVS (Concurrent Versions System) ou Subversion.
Vous l'utiliser comme ceci (cloné à partir de la page de manuel):
#include <stdio.h>
static char const rcsid[] =
"$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $";
int main() { return printf("%s\n", rcsid) == EOF; }
et fc est compilé dans fo, la commande
ident f.c f.o
volonté sortie
f.c:
$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $
f.o:
$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $
Si votre f.o
a été ajouté à une bibliothèque statique f.a
puis ident f.a
devrait afficher une sortie similaire. Si vous avez plusieurs [a-z].o
de construction similaire dans votre az.a
vous devriez trouver toutes leurs chaînes dans le fichier az.a
. CAVEAT: Ce n'est pas parce qu'ils se trouvent dans le fichier .a qu'ils seront inclus dans votre fichier de programme. À moins que le programme ne les référence, l'éditeur de liens ne voit aucun besoin de les inclure. Vous devez donc généralement avoir une méthode dans chaque module pour renvoyer la chaîne, et l'application doit appeler cette méthode. Il existe des moyens de convaincre la plupart des linkers qu'il s'agit d'un symbole requis sans le référencer, mais cela dépend de l'éditeur de liens et dépasse la portée de cette réponse.
Si au contraire, vous êtes familier avec le CSSC (code source du système de contrôle) alors vous utilisez man 1 what
à la place, et il ressemblerait à ceci (fait avec des macros pour montrer la flexibilité disponible):
#include <stdio.h>
#define VERSION_STR "5.4"
#define CONFIG "EXP"
#define AUTHOR "eggert"
static char const sccsid[] =
"@(#) " CONFIG " v " VERSION_STR " " __DATE__ " " __TIME__ " " AUTHOR;
int main() { return printf("%s\n", sccsid) == EOF; }
et fc est compilé dans fo, la commande
what f.c f.o
volonté sortie
f.c:
@(#) EXP v 5.4 1993/11/09 17:40:15 eggert
f.o:
@(#) EXP v 5.4 1993/11/09 17:40:15 eggert
PS: les deux ident
et what
sont des commandes fournies avec des systèmes de contrôle de source centralisés spécifiques. Si vous utilisez un système de contrôle de source distribué (comme git), le concept entier peut ne pas avoir de sens. Pour certaines idées en utilisant git
voir ce fil: Moving from CVS to git: $Id:$ equivalent? si le hachage n'est pas le même que le numéro de version. :)
Les solutions ci-dessous (deux que j'écris) sont également disponibles pour les bibliothèques partagées, bien sûr. –
Juste ajouté une autre réponse en fonction de votre montage ... J'espère que cela aide. – jheddings