关于warning: AC_INIT: not a literal: $VERSION

configure.inconfigure.ac中,一般在宏内不能直接使用变量,只能用常量,但是如果想使用变量,我们知道可以使用m4_esyscmdesyscmd宏来避免类似如

warning: AC_INIT: not a literal: $VERSION
的警告,这个警告可能会对后续的操作产生一定错误,比如以宏AC_INIT为例:
VERSION=`echo $(cat ./version.txt)`
AC_INIT(my-fine-package, [$version])
就会产生一个警告,但是写成如下宏的定义格式,就不会产生警告:
AC_INIT(my-fine-package, m4_esyscmd([echo $(cat ./version.txt)]))
但是这样有一个问题,我们在产生的configure文件内容中,会出现变量如下形式:
VERSION='1.0.0
'
这样在执行./configure的时候,产生shell的语法错误,怎么解决这个问题呢?去掉换行即可,在产生shell的过程当中,我们可以避免换行:
1,echo命令是会自动产生一个换行的,带上-n选项,那么就可以去掉换行,如下所示:
AC_INIT(my-fine-package, m4_esyscmd([echo -n $(cat ./version.txt)]))
2,使用tr命令去掉换行:
AC_INIT(my-fine-package, m4_esyscmd([tr -d "\n" < VERSION)]))
方法是多样的,就需要看你的shell功底了,:)。

Categories

| | 评论(0)

发表评论

August 2012

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

关于此日记

此日记由 Cnangel 发表于 June 9, 2009 5:44 PM

此Blog上的上一篇日记CPAN对Perl模块进行编译

此Blog上的下一篇日记fedora11发布了

首页归档页可以看到最新的日记和所有日记。

归档

Powered by Movable Type 5.14-en