上下文:我正在 CygWin 中编译 Windows 上的 OpenLDAP。
由于我对手册页(可能还有其他文档,我专注于完成编译)不感兴趣,因为我可以在线获取它们,所以我如何告诉configure和/或make跳过它们的生成(或至少是它们的生成)安装)?
答案1
在运行之前./configure
,Makefile.in
在项目根目录中进行编辑以doc
从SUBDIRS
变量中删除。这将导致doc
在构建和安装过程中忽略子目录中的所有内容。
sed -i '/SUBDIRS/s/doc//' Makefile.in
答案2
如果您查看 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
run即可make install-lisp
。您的 make 文件可能会提供类似的选项。不检查它,就不可能知道。
最后,如果您不想执行怎么办make install
?也许你只是想表演一场普通的表演make
。为此,请查找名为default
;的规则。这将是在make
没有特定命令的情况下调用时使用的规则。在我的示例中,您会看到该default
规则仅指向另一个名为 的规则all
,并且该规则调用另外两个规则:lisp
和info
。当我粘贴示例时,为了简洁起见,我剪切了大部分行,因此规则的文本lisp
不在这里,但很明显您确实想要使用该命令,而不是命令info
,因此您可以运行make lisp
。