Autotool automake выводит исполняемый файл с версией
Я пытаюсь добавить к выходному имени исполняемого файла проекта автоинструмента номер версии.
С libs очень просто: вы можете добавить -version-info
возможность Makefile.am
Как я могу сделать то же самое сbin_PROGRAMS
Пока что попробовал:
HELLO_VERSION_CURRENT = 1
HELLO_VERSION_REVISION = 2
HELLO_VERSION_AGE = 1
bin_PROGRAMS = hello_${HELLO_VERSION_CURRENT}_${HELLO_VERSION_REVISION}_${HELLO_VERSION_AGE}
hello_SOURCES = hello.c
Таким образом, он не компилируется из-за SOURCES
должно быть: hello_1_2_1_SOURCES
, но я не знаю, как сказать, чтобы автоматизировать это.
Другим способом может быть запуск сценария после сборки: как добавить действие после сборки в Makefile.am
?
3 ответа
Как насчет использования некоторых предустановок autoconf
выходные переменные в вашем Makefile.am
:
bin_PROGRAMS = hello_@PACKAGE_VERSION@
hello_@PACKAGE_VERSION@_SOURCES = hello.c
Предыдущие работы для меня на Дарвина с autoconf
v2.69 и automake
v1.15.
С использованием PACKAGE_VERSION
из вашего исходного кода еще проще: #include "config.h"
вот где все выходные переменные autoconf #define
д. Например:
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
...
#define PACKAGE_VERSION "1.2.3-rc-whatever"
Ссылка:
Вы можете сделать это так:
HELLO_VERSION_CURRENT = 1
HELLO_VERSION_REVISION = 2
HELLO_VERSION_AGE = 1
bin_PROGRAMS = hello_$(HELLO_VERSION_CURRENT)_$(HELLO_VERSION_REVISION)_$(HELLO_VERSION_AGE)
hello_$(HELLO_VERSION_CURRENT)_$(HELLO_VERSION_REVISION)_$(HELLO_VERSION_AGE)_SOURCES = hello.c
Хотя, в этом случае, я бы предложил сделать более короткие имена переменных...
В конце я добавляю следующее к моему Makefile.am
all:
cp ./.libs/hello ./.libs/hello_${HELLO_VERSION_CURRENT}_${HELLO_VERSION_REVISION}_${HELLO_VERSION_AGE}
РЕДАКТИРОВАТЬ Я нашел новое решение
HELLO_VERSION_CURRENT = 1
HELLO_VERSION_REVISION = 2
HELLO_VERSION_AGE = 1
bin_PROGRAMS = hello_$(HELLO_VERSION_CURRENT)_$(HELLO_VERSION_REVISION)_$(HELLO_VERSION_AGE)
hello___HELLO_VERSION_CURRENT____HELLO_VERSION_REVISION____HELLO_VERSION_AGE__SOURCES = hello.c
hello___HELLO_VERSION_CURRENT____HELLO_VERSION_REVISION____HELLO_VERSION_AGE__CFLAGS =
hello___HELLO_VERSION_CURRENT____HELLO_VERSION_REVISION____HELLO_VERSION_AGE__LDFLAGS =
AM_CFLAGS = @hello___HELLO_VERSION_CURRENT____HELLO_VERSION_REVISION____HELLO_VERSION_AGE__CFLAGS@
AM_LDFLAGS = @hello___HELLO_VERSION_CURRENT____HELLO_VERSION_REVISION____HELLO_VERSION_AGE__LDFLAGS@
CLEANFILES = *~