“ make dist”命令如何工作?我被困在一个脚本上,我需要对其进行更新以添加新的文件和文件夹

时间:2019-07-17 14:35:33

标签: shell makefile automake

我必须向运行make dist命令时创建的zip文件和文件夹添加文件。这是一个开源项目。

经过研究,我了解我必须修改Makefile.am,但在线示例无法正常工作或与我当前的Makefile.am匹配

Makefile.am

SUBDIRS = bin data po src extensions docs

DISTCLEANFILES =        \
    intltool-extract    \
    intltool-merge      \
    intltool-update

EXTRA_DIST =                    \
    $(bin_SCRIPTS)      \
    intltool-merge.in       \
    intltool-update.in      \
    intltool-extract.in

DISTCHECK_CONFIGURE_FLAGS = --disable-update-mimedb

check-po:
    @for i in $(top_srcdir)/po/*.po ; do \
        if ! grep -q ^`basename $$i | \
        sed 's,.po,,'`$$ $(top_srcdir)/po/LINGUAS ; then \
            echo '***' `basename $$i | \
            sed 's,.po,,'` missing from po/LINGUAS '***' ; \
            exit 1; \
        fi; \
    done;

lint:
    flake8 --ignore E402 $(top_srcdir)/src $(top_srcdir)/extensions

test: lint check-po
    PYTHONPATH=$(pkgdatadir)/extensions:$(PYTHONPATH) \
    python -m sugar3.test.discover $(top_srcdir)/tests

configure.ac

AC_INIT([Sugar],[0.114],[],[sugar])

AC_PREREQ([2.59])

AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([configure.ac])

SUCROSE_VERSION="0.114"
AC_SUBST(SUCROSE_VERSION)

AM_INIT_AUTOMAKE([1.9 foreign dist-xz no-dist-gzip])

AM_MAINTAINER_MODE

PYTHON=python2
AM_PATH_PYTHON

AC_PATH_PROG([EMPY], [empy])
if test -z "$EMPY"; then
    AC_MSG_ERROR([python-empy is required])
fi

PKG_CHECK_MODULES(SHELL, gtk+-3.0)

IT_PROG_INTLTOOL([0.35.0])
GETTEXT_PACKAGE=sugar
AC_SUBST([GETTEXT_PACKAGE])
AM_GLIB_GNU_GETTEXT

AC_ARG_ENABLE(update-mimedb,
   AC_HELP_STRING([--disable-update-mimedb],
                   [disable the update-mime-database after install [default=no]]),,
    enable_update_mimedb=yes)
AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, test x$enable_update_mimedb = xyes)

GLIB_GSETTINGS


AC_CONFIG_FILES([
bin/Makefile
bin/sugar
data/icons/Makefile
data/Makefile
extensions/cpsection/aboutcomputer/Makefile
extensions/cpsection/aboutme/Makefile
extensions/cpsection/background/Makefile
extensions/cpsection/backup/Makefile
extensions/cpsection/backup/backends/Makefile
extensions/cpsection/datetime/Makefile
extensions/cpsection/frame/Makefile
extensions/cpsection/keyboard/Makefile
extensions/cpsection/language/Makefile
extensions/cpsection/modemconfiguration/Makefile
extensions/cpsection/Makefile
extensions/cpsection/network/Makefile
extensions/cpsection/power/Makefile
extensions/cpsection/updater/Makefile
extensions/cpsection/webaccount/services/Makefile
extensions/cpsection/webaccount/Makefile
extensions/deviceicon/Makefile
extensions/globalkey/Makefile
extensions/webservice/Makefile
extensions/Makefile
Makefile
po/Makefile.in
src/jarabe/config.py
src/jarabe/controlpanel/Makefile
src/jarabe/desktop/Makefile
src/jarabe/frame/Makefile
src/jarabe/intro/Makefile
src/jarabe/journal/Makefile
src/jarabe/Makefile
src/jarabe/model/Makefile
src/jarabe/model/update/Makefile
src/jarabe/util/Makefile
src/jarabe/util/telepathy/Makefile
src/jarabe/view/Makefile
src/jarabe/webservice/Makefile
src/Makefile
])

AC_OUTPUT

当我运行命令make dist时,输出zip不包含我现在需要添加的文件和文件夹。我不知道应该在代码(Makefile.am或configure.ac)的哪个位置进行更改。

2 个答案:

答案 0 :(得分:2)

  

我必须向运行make dist命令时创建的zip文件和文件夹添加文件。

我认为这些未包含在发行版中。如果不确定,请检查-基于Automake的构建系统(例如您的系统)会自动识别很多文件,以包含在分发包中。

假设这些文件尚未包括在内,有几种方法可以使它们成为文件。最简单的方法是将它们添加到EXTRA_DIST变量中,产生

EXTRA_DIST =                \
    $(bin_SCRIPTS)          \
    intltool-merge.in       \
    intltool-update.in      \
    intltool-extract.in     \
    a_directory             \
    some_file.ext

如果继续使用多行格式(我喜欢它,因为我发现它更容易阅读),请不要忘记后面的反斜杠。您可以指定文件,目录或两者的路径。请注意,在目录的情况下,分发中将不仅包含目录本身,而且还将递归包含目录的所有内容。这全部记录在in the manual中。

如果需要更好的控制,则还有一个扩展点,用于管理the "dist hook"形式的分发内容。这包括名为make的{​​{1}}目标。像您的dist-hook中的任何其他文字make规则一样,您为构建目标提供的任何规则都将复制到最终生成的Makefile.am中,如果存在这样的规则,则运行其配方作为构建发行版的一部分,在填充发行版目录之后但从中构建存档文件之前。您可以在该目标的配方中编写或多或少的任意shell代码,以调整分布。请按照上面的链接获取文档以获取详细信息。

答案 1 :(得分:1)

EXTRA_DIST变量听起来像东西。