如何解决是否可以在不指定 --prefix 的情况下重新运行配置,但仍保留先前运行时指定的前缀?
假设我正在使用 autotools 为某个项目创建 Makefile,并且我经常更改 configure.ac
文件。之后,我必须更新构建文件:
/path/to/project/dir$ autoreconf -vfi
...
/path/to/project/dir$ ./configure --prefix=/home/user/.local
...
/path/to/project/dir$
我可以避免每次运行 --prefix
时都指定 autoreconf
参数吗?如果我在下次运行 ./configure
时直接省略它,安装前缀将重置为 /usr/local
,但我希望它保留我在第一次运行 {{} 时指定的值 /home/user/.local
1}}。
注意:当然,我可以在我的 ./configure
文件中创建别名:
.bashrc
但是,那样的话,每次我想更改项目的前缀路径时,我都必须编辑 alias configure="./configure --prefix=/home/user/.local
文件。
注意 2:我观察到跳过重新运行 .bashrc
会使 ./configure
运行一些 make
脚本,所以这应该是可能的!
解决方法
我经常更改 configure.ac
文件。之后,我必须更新构建文件
不,不一定。至少,不是手动的。如果您已经至少配置了一次项目,并且您仍然拥有生成的 Makefile 和其他配置结果,那么每次您make
,构建系统都会自动重建并在需要时重新配置项目。
我观察到跳过重新运行 ./configure
会使 make
运行一些 config.status
脚本,所以这应该是可能的!
确实,config.status
是由 configure
编写的。它记录 configure
参数及其测试结果,并且它是实际构建输出文件(例如 makefile)的组件。它支持使用与之前的 configure
运行(当 configure
本身被构建时)相同的参数重新运行 config.status
。
如果您在进行更改后重新配置时对使用所有相同的 configure
参数(包括宝贵的环境变量)感到满意,那么最简单的方法就是让 make
处理它。这将在许多情况下涵盖您。但是,如果您删除了您的 Makefile
,或者特别是您的 config.status
,那么所需的信息将不再可用。除了手动删除这些文件之外,如果您make distclean
或 make maintainer-clean
,您还将删除它们。
当然,如果您需要添加、删除或修改任何 configure
参数,或者您直接运行 configure
,这也无济于事。如果您想涵盖此类情况,那么我认为除了您建议的别名替代方案的一般路线之外,别无选择。我会在该类中包含一些选项,例如在项目中创建包装器或环境配置脚本,或手动使用 alias
命令添加仅作用于当前 shell 执行上下文的别名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。