hyperboreean
hyperboreean

Reputation: 8333

Store GNU make generated files elsewhere

How can I store GNU make & configure files elsewhere? I have a project I am working on that I get compiled using:

./configure --prefix=/usr && make && su -c 'make install'

The thing is I don't want to pollute the current folder, which is a svn/git/hg/whatever sandbox with files generated by that command. I want to put those files in a separate location. I don't know if it's similar, but when I compile the linux kernel from source, I can specify where to put the ouput by passing the 'O' option to 'make', something like this:

make O=/home/user/linux-output

Upvotes: 5

Views: 2536

Answers (2)

Douglas Leeder
Douglas Leeder

Reputation: 53310

As Kristof already pointed out, GNU autotools inherently support out out-of-tree builds at the configure level.

So you can have the Makefile and built binaries out of the source tree trivially.

To get all the auto-generated artefacts out of the source tree requires much more work however.

We have a script that copies changes from a source tree into a working_copy, carefully preserving the configure script etc in the working_copy, which allows the original source tree to be pristine. However it's very inefficient, so I wouldn't recommend it.

I would recommend a normal out-of-tree build, and then explicitly excluding the remaining auto-generated files in the source tree.

Upvotes: 1

Kristof Provost
Kristof Provost

Reputation: 26322

The Makefile must support this feature.

I think the autoconf generated makefiles all support the following use:

mkdir ../build
cd ../build
../configure --prefix=/usr
make
make install

(It's certainly recommended for gcc builds).

Upvotes: 11

Related Questions