下一個: 目錄變數,上一個: 命令變數,上層: Makefile 慣例 [目錄][索引]
DESTDIR
:支援分段安裝DESTDIR
是一個附加到每個已安裝目標檔案的變數,像這樣
$(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
DESTDIR
變數由使用者在 make
命令列上指定,作為一個絕對路徑檔名。例如
make DESTDIR=/tmp/stage install
DESTDIR
應該僅在 install*
和 uninstall*
目標中被支援,因為這些是唯一有用的目標。
如果您的安裝步驟通常會安裝 /usr/local/bin/foo 和 /usr/local/lib/libfoo.a,那麼如上述範例中調用的安裝將會安裝 /tmp/stage/usr/local/bin/foo 和 /tmp/stage/usr/local/lib/libfoo.a 取而代之。
以這種方式將變數 DESTDIR
附加到每個目標,提供了分段安裝,在分段安裝中,已安裝的檔案不會直接放置到它們預期的位置,而是被複製到一個臨時位置 (DESTDIR
)。然而,已安裝的檔案會保持它們的相對目錄結構,並且任何嵌入的檔名都不會被修改。
您完全不應該在您的 Makefile 中設定 DESTDIR
的值;那麼檔案預設會安裝到它們預期的位置。此外,指定 DESTDIR
不應該以任何方式改變軟體的運作,所以它的值不應該包含在任何檔案內容中。
DESTDIR
支援通常用於套件建立。它對於想要了解給定套件將安裝在哪裡的使用者也很有幫助,並允許通常沒有權限安裝到受保護區域的使用者,在獲得這些權限之前先建置和安裝。最後,對於像 stow
這樣的工具也很有用,在這些工具中,程式碼被安裝在一個地方,但透過符號連結或特殊的掛載操作,使其看起來像是安裝在其他地方。因此,我們強烈建議 GNU 套件支援 DESTDIR
,雖然這不是絕對的要求。
下一個: 目錄變數,上一個: 命令變數,上層: Makefile 慣例 [目錄][索引]