如何避免 make 生成和安装手册页?

如何避免 make 生成和安装手册页?

上下文:我正在 CygWin 中编译 Windows 上的 OpenLDAP。

由于我对手册页(可能还有其他文档,我专注于完成编译)不感兴趣,因为我可以在线获取它们,所以我如何告诉configure和/或make跳过它们的生成(或至少是它们的生成)安装)?

答案1

在运行之前./configureMakefile.in在项目根目录中进行编辑以docSUBDIRS变量中删除。这将导致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-infoinstall规则中删除该单词(以 开头的行install:

现在,对于第三个(最佳)选项,再看一下我的示例文件,请注意存在一个 command install-lisp,您可以看到它执行除安装文档之外的所有操作,因为这是该install命令中仅有的两个命令。因此,在这个示例中,实际上不需要更改任何内容,只需运行make installrun即可make install-lisp。您的 make 文件可能会提供类似的选项。不检查它,就不可能知道。

最后,如果您不想执行怎么办make install?也许你只是想表演一场普通的表演make。为此,请查找名为default;的规则。这将是在make没有特定命令的情况下调用时使用的规则。在我的示例中,您会看到该default规则仅指向另一个名为 的规则all,并且该规则调用另外两个规则:lispinfo。当我粘贴示例时,为了简洁起见,我剪切了大部分行,因此规则的文本lisp不在这里,但很明显您确实想要使用该命令,而不是命令info,因此您可以运行make lisp

相关内容