为什么我在定义 PATH 变量时仍然要使用 --with-boost 选项

Why should I STILL use --with-boost option when I defined the PATH variable

我很想听听您对我长期以来一直面临的问题的解释和解决方法。

我在远程集群中工作,其中不允许使用 sudo 命令并且不允许对 $HOME 分支之上的目录进行任何操作 ($HOME=/storage/5/trentalove)

我需要配置

$HOME/external/trentacoollime

with boost 库,我使用 http://www.boost.org/users/history/version_1_65_1.html

的 boost_1_65_1.tar.bz2 源安装在 $HOME/boost_1_65_1

(请注意 sudo apt-get install libboost-all-dev 是不允许的。)

然后,我在 .bash_profile 中定义我的 PATH 变量并导出为 `导出路径 = $HOME/boost_1_65_1:$PATH'

但是,当我在 $HOME/external/trentacoollime 目录中配置时,

./configure

我收到错误消息提示

configure: error: cannot find Boost headers version>=1.41.0

当我配置

./configure --with-boost=../../boost_1_65_1

没有报错,配置成功。

我的猜测是,由于我定义了PATH变量并将其导出到boost目录,因此在执行./configure命令时不需要--with-boost=../../boost_1_65_1选项。但是,我需要它。

有人可以解释一下我错过了什么吗?

p.s。我在自己的机器上用 sudo apt-get install libboost-all-dev 做了同样的事情,它在 /usr/include 目录下安装了 boost_1_65_1。 然后,我仍然可以仅使用 ./configure 而没有 --with-boost= 选项来配置 $HOME/external/trentacoollime($PATH 的定义方式与集群中的定义方式相同)。 但是,请注意,我无法在集群中实施相同的策略,因为我没有 sudo 的权限,也没有任何类型的 mv、cp、ln 命令到 /usr/include,它位于比我的 [= 更高的分支24=]目录。

使用 PATH 对 autotools 没有影响(除了可能在配置过程中找到要执行的二进制文件)。

无论如何您都需要提供--with-boost,除非您的具体项目另有安排。有时他们使用 pkg-config 或选择专用环境变量(如 BOOST_DIRBOOST_ROOT)。

我认为这两个在基于 autotools 的项目中都不流行。