关于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功底了,:)。

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Entry

This page contains a single entry by Cnangel published on June 9, 2009 5:44 PM.

CPAN对Perl模块进行编译 was the previous entry in this blog.

fedora11发布了 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.