2015-05-16 58 views
1

...对不起,这必须是重复的,但我只是针对正在制作自己的项目并可以更改构建系统设置的人员解答问题。用于autotools项目的独立构建目录不适用于使用

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

对于VIM,编译使用 “的./configure & &使& &须藤使安装”。如果我在vim.hg.build并运行 “../vim.hg/configure .....”,我得到:

../vim.hg/configure: line 6: cd: src: No such file or directory 

对于Git,那么编译使用:“让配置& & ./configure & & make & & sudo make install“。我希望能够在git.git.build中运行“make --directory = ../git.git configure”,但是这会在../git.git中留下配置文件。那么,也许只是配置留下的不是那么糟糕,所以我然后尝试“../git.git/configure”,它在build目录中成功创建了config.status,config.log和config.mak.autogen。但运行使给出:

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的配置和只作修改现有的文件和子目录,所以尽管我可以建立这样,构建目录只剩下符号链接 - 没有实际的分离。

前往cmake!

回答

1

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

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

作为一个更一般的回答你的问题:简单的Autotools项目应该自动使用out-of-tree构建。在使用某些高级功能时,必须注意确保树外构建继续有效。有时项目不这样做。

(运行make distcheck将测试出的树的建筑,所以这是一个制作发布之前至少运行一次是一个好主意。)

相关问题