Несколько раз упоминалось man 1 ident
, поэтому вот подробности об использовании этого метода.
ident
- это команда, которая поставляется с RCS (системой контроля версий), но также может быть доступна, если вы используете CVS (система одновременных версий) или Subversion.
Вы бы использовали это так (клонировано со страницы руководства):
#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; }
и f.c компилируется в f.o, тогда команда
ident f.c f.o
выведет
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 $
Если ваш f.o
был добавлен в статическую библиотеку f.a
, тогда ident f.a
должен показать аналогичный результат. Если у вас есть несколько похожих [a-z].o
в вашем az.a
, вы должны найти все их строки в az.a
файле.
ПРЕДОСТЕРЕЖЕНИЕ: То, что они находятся в файле .a, не означает, что они будут включены в ваш программный файл. Если программа не ссылается на них, компоновщик не видит необходимости включать их. Таким образом, у вас обычно должен быть метод в каждом модуле для возврата строки, и приложение должно вызывать этот метод. Есть способы убедить большинство компоновщиков в том, что это обязательный символ, без фактической ссылки на него, но это зависит от компоновщика и выходит за рамки этого ответа.
Если вместо этого вы знакомы с SCCS (системой управления исходным кодом), вы должны использовать вместо этого man 1 what
, и это будет выглядеть следующим образом (сделано с помощью макросов, чтобы показать доступную гибкость):
#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; }
и f.c компилируется в f.o, тогда команда
what f.c f.o
выведет
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: и ident
, и what
- это команды, которые поставляются с конкретными централизованными системами управления версиями. Если вы используете распределенную систему управления версиями (например, git), вся концепция может не иметь смысла. Некоторые идеи по использованию git
см. В этой ветке: Переход с CVS на git: $ Id: $ эквивалент?, хотя хэш не совпадает с номером версии. :)
person
Jesse Chisholm
schedule
02.06.2016