5.3. 了解在說明文件樹中的 Makefile

在 FreeBSD 說明文件計劃樹底下的 Makefile 主要有三個類型。

5.3.1. 子目錄的 Makefile

這種 Makefile 通常採用的格式為:

SUBDIR =articles
SUBDIR+=books

COMPAT_SYMLINK = en

DOC_PREFIX?= ${.CURDIR}/..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

前四行非空白的行用來定義 make(1) 的變數 SUBDIR, COMPAT_SYMLINKDOC_PREFIX

SUBDIR 敘述與 COMPAT_SYMLINK 敘述示範了如何指派數值到一個變數,覆蓋先前的值。

SUBDIR 的第二行敘述示範如何將數值附加到目前的變數值之後,SUBDIR 變數現在變成了 articles books

DOC_PREFIX 指派式示範了如何只在變數尚未定義時才指派數值給變數。這個功能在當 DOC_PREFIX 不在 Makefile 所認為的地方時,使用者可以覆蓋這個值,並提供正確的值。

這所有的敘述實際代表什麼意思呢? SUBDIR 會列出接下來建置流程應傳遞作業到那些子目錄。

COMPAT_SYMLINK 是一個用來指定語言官方編碼的相容性符號連結 (doc/en 會指向 en_US.ISO-8859-1)。

DOC_PREFIX 是到 FreeBSD 說明文件計劃樹根目錄的路徑。這並非每一次都可以很輕易找到,為了增加彈性,要改寫也很簡單。.CURDIR 是一個 make(1) 內建的變數,代表目前目錄的路徑。

最後一行會引用 FreeBSD 說明文件計劃的全專案 make(1) 系統檔 doc.project.mk,用來轉換這些變數成為建置的指令。

5.3.2. 說明文件的 Makefile

這些 Makefile 用來設定 make(1) 變數來描述要如何建置在該目錄中的說明文件。

這裡有一個例子:

MAINTAINER=nik@FreeBSD.org

DOC?= book

FORMATS?= html-split html

INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=

# SGML content
SRCS=  book.xml

DOC_PREFIX?= ${.CURDIR}/../../..

.include "$(DOC_PREFIX)/share/mk/docproj.docbook.mk"

MAINTAINER 變數讓提交者可以聲明文件在 FreeBSD 說明文件計劃中的所有權,並負責維護該文件。

DOC 是由此目錄會建立的主要文件的名稱 (不需要 .xml 副檔名)。SRCS 會列出產生文件所需的各別檔案,此處也應引用要在重新建置 (Rebuild) 使用的重要的檔案。

FORMATS 用來指定此份文件建置時預設應採用的格式。INSTALL_COMPRESSED 是為在文件建置時預設要使用的壓縮技術清單。INSTALL_ONLY_COMPRESS 預設為空值的,若在建置時只想要產生壓縮後的文件則改成非空值。

DOC_PREFIX 以及 include 敘述句應不需再說明了。

本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。