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

5.8. `MASTERDIR` (主 port 所在的目录)
上一页 | 第 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 的设置来联编。

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

本文档和其它文档可从这里下载： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.