FreeBSD Porter 手册
上一页 | 第8章`pkg-`*`` 文件 | 下一页

# 8.6 使用 `SUB_FILES` 和 `SUB_LIST`

`SUB_FILES` 和 `SUB_LIST` 这两个变量可以用来在 port 文件中使用某些动态的值， 例如 `pkg-message` 中的 installation `PREFIX`。

使用 `SUB_FILES` 变量可以指定需要自动修改的文件列表。 在 `SUB_FILES` 中的每一个 `file`， 都必须有一个对应的、 存在于 `FILESDIR` 目录的 ``file`.in` 文件。 如果您加入了一些文件， 例如 `pkg-message`、 `pkg-install`、 `pkg-deinstall` 或 `pkg-reg`， 则相关的 `PKG-`FILE`` 变量就应设置为 ``WRKDIR`/pkg-`file``。

用 `SUB_FILES` 变量， 可以指定需要自动进行修改的文件列表。 在 `SUB_FILES` 中的每一个 `文件`， 在 `FILESDIR` 目录中都必须有一个对应的 ``文件`.in`。 修改后的版本将保存在 `WRKDIR`。 在 `USE_RC_SUBR` (或已经过时的 `USE_RCORDER`) 中定义的文件会自动加入到 `SUB_FILES` 中。 对于 `pkg-message`、 `pkg-install`、 `pkg-deinstall` and `pkg-reg`， 对应的 Makefile 变量会被自动设置， 以指向处理过的版本。

`SUB_LIST` 这个变量的内容是一系列 `VAR=VALUE` 对。 `SUB_FILES` 所列出的文件中所有的 `%%VAR%%` 都将被替换为 `VALUE`。 系统自动定义了一些常用的替换对， 包括： `PREFIX`、 `LOCALBASE`、 `DATADIR`、 `DOCSDIR`， 以及 `EXAMPLESDIR`。 替换结果中所有以 `@comment` 开头的行， 都将在变量替换之后被删去。

下面的例子中， 将把 `pkg-message` 中的 `%%ARCH%%` 替换为系统所运行的架构名称：

    SUB_FILES=     pkg-message
    SUB_LIST=      ARCH=${ARCH}

注意， 在上述例子中， `FILESDIR` 里必须有 `pkg-message.in` 这个文件。

下面是一个正确的 `pkg-message.in` 例子：

    Now it is time to configure this package.
    Copy %%PREFIX%%/share/examples/putsy/%%ARCH%%.conf into your home directory
    as .putsy.conf and edit it.

上一页 | 起始页 | 下一页
改变 `pkg-`*`` 文件的名字 | 上一级 | 测试您的 port

若您有关于 FreeBSD ports 系统的问题， 请发送电子邮件至 <ports@FreeBSD.org>。
关于此文档的任何问题， 请致函 <doc@FreeBSD.org>。