是否可以在不指定 --prefix 的情况下重新 运行 配置,但仍保留之前 运行 中指定的前缀?

Is it possible to re-run configure without specifying --prefix, but yet keeping the prefix specified on an earlier run?

假设我正在使用 autotools 为某个项目创建 Makefile,并且我经常更改 configure.ac 文件。之后,我必须更新构建文件:

/path/to/project/dir$ autoreconf -vfi
...
/path/to/project/dir$ ./configure --prefix=/home/user/.local
...
/path/to/project/dir$ 

我可以避免在每次 运行 autoreconf 时指定 --prefix 参数吗?如果我在下次 运行 ./configure 时简单地省略它,安装前缀将重置为 /usr/local,但我希望它保留我在第一个指定的值 /home/user/.local 运行 个 ./configure

注意: 当然,我可以在我的 .bashrc 文件中创建一个别名:

alias configure="./configure --prefix=/home/user/.local

但是,那样的话,每次我想更改项目的前缀路径时,我都必须编辑 .bashrc 文件。

注释 2: 我观察到跳过重新 运行ning ./configure 使 make 运行 一些 config.status 脚本,所以这应该是可能的!

I am frequently changing the configure.ac file. After that, I have to update the build files

嗯,不,不一定。至少,不是手动的。如果您已经至少配置了一次项目,并且仍然有生成的 Makefile 和其他配置结果,那么每次您 make,构建系统都会自动重建自身并在需要时重新配置项目。

I observed that skipping re-running ./configure makes make run some config.status script, so this should be possible !

的确,config.statusconfigure写的。它记录了 configure 参数及其测试结果,它是实际构建输出文件(例如 makefile)的组件。它包括对重新 运行ning configure 的支持,其参数与之前 configure 运行 所用的参数相同(当 config.status 本身已构建时)。

如果您满足于在进行更改后重新配置时使用所有相同的 configure 参数(包括宝贵的环境变量),那么最简单的事情就是让 make 处理它。在许多情况下,这将涵盖您。但是,如果您删除了 Makefile,尤其是 config.status,则所需信息将不再可用。除了手动删除这些文件外,如果 make distcleanmake maintainer-clean.

,您也将删除它们

当然,如果您需要添加、删除或修改任何 configure 参数,或者您直接 运行 configure,这无济于事。如果您想涵盖此类情况,那么除了您建议的别名替代方案的一般路线之外,我看不到其他方法。我会在那个 class 选项中包括在项目中创建包装器或环境配置脚本,或者手动使用 alias 命令添加一个别名,该别名的范围限定为当前 shell 执行仅上下文。