如何判断 configure 和 make 是否支持树外构建?

How to tell if configure and make support out-of-tree builds?

我经常需要为许多不同的体系结构构建通用 link 库,如 zlib、libpng、jpeglib、freetype 等。我更喜欢做树外构建,就像这样:

mkdir build_linux_x64
cd build_linux_x64
../configure
make

这通常可以正常工作,但现在我了解到,只有满足以下条件,这才会有效:"The project must be enabled for out-of-tree builds, typically with the user of VPATH if using make" (Source)

这让我想到了一个问题:如何判断一个项目是否启用了树外构建?如果项目未启用树外构建,configuremake 是否会失败,或者我应该如何判断?

如果树外构建有效,那么你就知道它有效:)。当他们说 "enabled" 时,并不意味着项目必须打开某些开关或配置选项。它们意味着包的作者需要编写他们的 Makefile.am(或者 Makefile.in,如果他们不使用 automake)文件,以便在 运行 树外时正常工作。除非尝试,否则无法知道这些文件是否正确写入。

如果您尝试了它但它不起作用,您应该向包提交错误。

请注意,使用 autotools 创建源代码分发包的标准方法会强制使用树外构建,因此如果他们使用标准方法创建源代码分发,那么它肯定会在树外构建树正确。