最简单的“configure”脚本,它将前缀参数传递给Makefile? (配置你好世界)

时间:2012-08-13 10:08:43

标签: makefile configure autoconf automake

我的最终目标是生成一个简单的.deb包。

为此,我已经读过,最好在项目的构建基础架构中提供3个构建阶段,而不是在debian /文件夹中进行。

所以我需要的第一件事是配置脚本,但是我想要最简单的配置脚本,它只接收一个“--prefix”参数并将其值传递给Makefile系统(因此makefile的“install”目标可以将文件复制到它。)

我可以不使用autoconf吗?我知道autoconf很棒但是对于最简单的配置阶段,我可能还不需要它。

由于

2 个答案:

答案 0 :(得分:2)

没有autoconf,我不会这样做。你基本上是说你想模仿autoconf的一个特定行为,而不知道autoconf添加的所有后果和相关行为。这违反了最少惊喜的原则,因为用户(甚至您的deb工具)会期望相关行为(DESTDIR--exec-prefix等)。只需使用autoconf。您可以使configure.ac非常简单:

AC_INIT([My App], [1.0], [my-email@me.com])
AM_INIT_AUTOMAKE([-Wall foreign])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

答案 1 :(得分:1)

我最终使用了这个:

#!/usr/bin/env bash
prefix=NONE
test "$prefix" = NONE && prefix=/usr/local

usage ()
{
    echo ""
    echo "Usage : configure [--prefix=PREFIX]"
    echo ""
}

while test x$1 != x; do
    case $1 in
        --prefix=*)
            prefix=`echo $1 | sed 's/--prefix=//'`
            ;;
        --prefix)
            shift
            prefix=$1
            ;;
        --help)
            usage
            exit
            ;;
        *)
            echo Warning: unknown argument $1 >&2
            usage
            ;;
    esac
    shift
done

echo -n "SUBDIRS = " > config.make

echo Configuration Summary
echo ---------------------
echo
echo "MyApp has been configured with "
echo "    prefix = $prefix"
echo
echo >> config.make
echo

echo -n  "prefix=$prefix" >> config.make

然后在Makefile中我需要做的第一件事是:

top_srcdir=.
CONFIG_MAKE=$(top_srcdir)/config.make

-include $(top_srcdir)/config.make

如果有更好的解决方案,我会感兴趣。