Build 自动工具项目的单独生成目录未设计为使用一个

Build 自动工具项目的单独生成目录未设计为使用一个,build,autotools,Build,Autotools,。。。很抱歉,这必须是重复的,但我只是为那些正在制作自己的项目并且可以更改构建系统设置的人提供了一些答案 我可以总是在一个单独的编译目录中编译一个程序,还是必须由程序的编译系统支持 对于vim,可以使用“./configure&&make&&sudomakeinstall”进行编译。如果我在vim.hg.build中并运行“./vim.hg/configure…”,我会得到: 对于git,可以使用“makeconfigure&./configure&&make&&sudomakeinstall”

。。。很抱歉,这必须是重复的,但我只是为那些正在制作自己的项目并且可以更改构建系统设置的人提供了一些答案

我可以总是在一个单独的编译目录中编译一个程序,还是必须由程序的编译系统支持

对于vim,可以使用“./configure&&make&&sudomakeinstall”进行编译。如果我在vim.hg.build中并运行“./vim.hg/configure…”,我会得到:

对于git,可以使用“makeconfigure&./configure&&make&&sudomakeinstall”进行编译。我希望在git.git.build中运行“make--directory=../git.git configure”会起作用,但这样会将configure文件保留在../git.git中。好吧,也许只是配置留下来并没有那么糟糕,所以我尝试了“./git.git/configure”,它成功地在build目录中创建了config.status、config.log和config.mak.autogen。但运行make会带来:

make: *** No targets specified and no makefile found.  Stop.
。。。是的,唯一的Makefile在git.git中

我甚至尝试通过运行以下命令对整个目录进行符号链接:

for fl in `ls -a ../vim.hg`; do
    echo "$fl"
    ln -s ../vim.hg/$fl $fl
done
。。。但是,vim的configure和make只修改现有的文件和子目录,所以即使我可以用这种方式构建,构建目录只剩下符号链接——没有实际的分离


快走

树外构建是AutoTool的一项功能,需要Autoconf和Automake

Vim和Git都只使用Autoconf而不使用Automake,因此它们无法利用该功能

对于您的问题,更一般的回答是:简单的Autotools项目应该自动处理树外构建。在使用某些高级功能时,必须注意确保树外构建继续工作。有时项目不这样做

(运行
makedistcheck
将测试树外构建,因此最好在发布之前至少运行一次。)

for fl in `ls -a ../vim.hg`; do
    echo "$fl"
    ln -s ../vim.hg/$fl $fl
done