Доброго времени суток!
Стоит задача: автоматически включать в код информацию о времени его последней компиляции. Как вариант решения видится следующее:
| Цитата | tree . ├── configure.ac ├── main.cpp ├── Makefile.am ├── sum.cpp ├── sum.h └── version.h
|
Пусть сначала выводится информация о времени сборки, а затем (для примера), выводится сумма двух чисел переданных через командрую строку. При этом функция вычисления суммы реализована в отдельном файле.
| Цитата | cat main.cpp
#include "sum.h" #include "version.h" #include <stdio.h> #include <stdlib.h>
int main (int argc, char * argv []) { printf ("%s\n", get_build_date () ); printf ("%s\n", get_build_time () );
printf ("%i\n", Sum (atoi (argv [1]), atoi (argv [2]) ) ); }
|
| Цитата | cat sum.cpp
#include "sum.h"
int Sum (int a, int b) { return a + b; }
|
| Цитата | cat sum.h
int Sum (int a, int b);
|
| Цитата | cat configure.ac
AC_INIT([main.cpp]) AM_INIT_AUTOMAKE([example], [0.1]) AC_PROG_CC AC_PROG_CXX AC_CONFIG_FILES([Makefile]) AC_OUTPUT
|
| Цитата | cat Makefile.am
bin_PROGRAMS = example example_SOURCES = main.cpp sum.cpp AM_CPPFLAGS = -O2 -g3 -Wall INCLUDES = -I$(top_srcdir)/include
|
Выполним сборку:
| Цитата | aclocal autoconf automake --add-missing ./configure make
|
Запустим приложение:
| Цитата | ./example 2 3 Jun 3 2012 22:07:44 5
|
Теперь если изменить файл main.cpp, то время последней компиляции обновиться (т.к. будет изменен файл main.o), а если мы внесем изменения в файл sum.cpp - то нет. Вопрос, как достичь автоматического обновления информации о времени последней компиляции при изменении любого файла? |