Autotool automake输出带有版本的可执行文件名

时间:2015-12-10 14:58:11

标签: c autotools automake

我试图在autotool项目的输出可执行文件名中添加版本号。

使用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 个答案:

答案 0 :(得分:1)

如何在Makefile.am中使用preset autoconf output variables

bin_PROGRAMS = hello_@PACKAGE_VERSION@

hello_@PACKAGE_VERSION@_SOURCES = hello.c

前面的内容适用于我在达尔文的autoconf v2.69和automake v1.15。

使用源代码中的PACKAGE_VERSION更加容易:#include "config.h",其中所有autoconf输出变量都是#define d。 E.g:

/* 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"

参考:

https://www.gnu.org/software/autoconf/manual/autoconf#Output-Variable-Index

答案 1 :(得分:0)

最后,我将以下内容添加到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 = *~ 

答案 2 :(得分:0)

你可以这样做:

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

虽然,在这种情况下,我建议制作更短的变量名......