如何避免 make 生成和安裝手冊頁?
上下文:我正在 CygWin 中的 Windows 上編譯 OpenLDAP。
由於我對手冊頁(可能還有其他文件,我專注於完成編譯)不感興趣,因為我可以讓它們線上,我如何告訴 configure 和/或 make 跳過它們的生成(或至少它們的安裝)?
在執行之前,在項目根目錄中
./configure
編輯以從變數中刪除。這將導致在建構和安裝過程中忽略子目錄中的所有內容。Makefile.in``doc``SUBDIRS``doc
sed -i '/SUBDIRS/s/doc//' Makefile.in
如果您查看 make 文件,您應該會看到一系列規則,即開頭沒有空格的行。您可能習慣使用的規則
install
通常放在 make 文件的底部,但通常還有許多其他規則。查找引用手冊頁源文件(它們通常具有單個數字文件副檔名)或某些文件目錄的規則。找到它後,您有三個選擇:1)通過刪除其命令(即它後面以空格開頭的行)使其成為空規則,或 2)刪除對它的引用,(即查看其他規則對於具有該規則名稱的命令,或 3) 找到不執行它的現有安裝規則。讓我舉個例子,使用真實 makefile 的摘錄:
default: all all: lisp info info: cd doc && $(MAKE) EMACS="$(EMACS)" install: install-lisp install-info install-lisp: lisp @$(SHELL) $(srcdir)/mkinstalldirs "$(DESTDIR)$(lispdir)";\ install-info: info @echo "cd doc && $(MAKE) EMACS=\"$(EMACS)\" dist: Makefile foo.elc $(MAKE) tarball \ clean: -rm -rf $(PACKAGE)* ;\ distclean: clean -rm -f config.log config.status config.cache Makefile
在上面的範例中,您可以刪除之後的行
info:
,install-info:
從而使其成為空規則,或者更好的方法是install-info
從install
規則中刪除單詞(行開頭install:
)現在,對於第三個(最佳)選項,再次查看我的範例文件並註意存在一個 command
install-lisp
,您可以看到除了安裝文件之外的所有操作,因為這是命令中僅有的兩個命令install
。所以在這個例子中,真的不需要改變任何東西,只需要執行make install
runmake install-lisp
。您的 make 文件可能會為您提供類似的選項。不檢查它是不可能知道的。最後,如果您不想執行 a
make install
怎麼辦?也許你只是想表演一個香草make
。為此,請查找名為default
;的規則。這將是在make
沒有特定命令的情況下呼叫時使用的規則。在我的範例中,您會看到該default
規則僅指向另一個名為 的規則all
,而該規則又呼叫了另外兩個規則:lisp
和info
。當我粘貼範例時,為了簡潔起見,我剪掉了大部分行,因此lisp
規則的文本不在此處,但很明顯您確實想使用該命令,而不是該info
命令,因此您可以執行make lisp
.