# MASTERDIR (主 port 所在的目录)

FreeBSD Porter 手册
上一页 | 第5章 　配置 Makefile | 下一页

# 5.8 `MASTERDIR` (主 port 所在的目录)

如果 port 需要依某些变量的设置 (举例来说， 分辨率或纸型) 来联编略有不同的预编译包， 则可以为每一个这样的包建立不同的目录， 这样可以让用户更容易地看到他们想要安装的版本， 但又能在这些 port 之间共用尽可能多的文件。 一般情况下， 如果运用得当， 除主目录之外都只需要很短的 `Makefile`。 这些 `Makefile` 中， 可以用 `MASTERDIR` 来指定其它文件所在的目录。 另外， 还应使用一个变量作为 `PKGNAMESUFFIX` 的一部分， 以便为不同的包给出不同的命名。

用例子来阐述这些会更为明晰。 以下是 `japanese/xdvi300/Makefile` 的部分代码：

    PORTNAME=       xdvi
    PORTVERSION=    17
    PKGNAMEPREFIX=  ja-
    PKGNAMESUFFIX=  ${RESOLUTION}
     :
    # default
    RESOLUTION?=   300
    .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
           ${RESOLUTION} != 300 && ${RESOLUTION} != 400
           @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
           @${ECHO_MSG} "Possible values are: 118, 240, 300 (default) and 400."
           @${FALSE}
    .endif

`japanese/xdvi300` 也提供了全部常规的补丁， 以及打包用到的文件等等内容。 如果您在那里输入 `make`， 它将使用默认的分辨率值 (300) 并正常地联编 port。

对于其它分辨率而言， 以下是 完整的 `xdvi118/Makefile`：

    RESOLUTION=     118
    MASTERDIR=      ${.CURDIR}/../xdvi300

    .include "${MASTERDIR}/Makefile"

(`xdvi240/Makefile` 和 `xdvi400/Makefile` 是相似的)。 `MASTERDIR` 定义会告诉 `bsd.port.mk` 常规的目录， 例如 `FILESDIR` 以及 `SCRIPTDIR` 应在 `xdvi300` 中查找。 `RESOLUTION=118` 这行将覆盖在 `xdvi300/Makefile` 中所作的 `RESOLUTION=300` 设置， 从而 port 将以分辨率为 118 的设置来联编。

上一页 | 起始页 | 下一页
依赖关系 | 上一级 | 联机手册

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