我试图在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
?
答案 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
虽然,在这种情况下,我建议制作更短的变量名......