1

我的最终目标是制作一个简单的 .deb 包。

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

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

我可以在不使用 autoconf 的情况下执行此操作吗?我知道 autoconf 很棒,但是对于最简单的配置阶段,我可能还不需要它那么糟糕。

谢谢

4

2 回答 2

2

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

AC_INIT([My App], [1.0], [my-email@me.com])
AM_INIT_AUTOMAKE([-Wall foreign])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
于 2012-08-13T13:29:07.827 回答
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

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

于 2012-08-13T22:47:06.373 回答