Храните GNU make сгенерированные файлы в другом месте - PullRequest
4 голосов
/ 21 августа 2009

Как я могу хранить GNU для создания и настройки файлов в другом месте? У меня есть проект, над которым я работаю, который я скомпилировал, используя:

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

Дело в том, что я не хочу загрязнять текущую папку, которая является svn / git / hg / любой песочницей, файлами, сгенерированными этой командой. Я хочу поместить эти файлы в отдельном месте. Я не знаю, похоже ли это, но когда я компилирую ядро ​​linux из исходного кода, я могу указать, куда поместить выходной файл, передав опцию 'O' для 'make', что-то вроде этого:

make O=/home/user/linux-output

Ответы [ 2 ]

9 голосов
/ 21 августа 2009

Makefile должен поддерживать эту функцию.

I думаю все сгенерированные autoconf make-файлы поддерживают следующее использование:

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

(безусловно, рекомендуется для сборок gcc).

1 голос
/ 21 августа 2009

Как уже отмечал Кристоф, автоинструменты GNU по своей природе поддерживают сборки вне дерева на уровне configure.

Таким образом, вы можете получить Makefile и встроенные двоичные файлы из дерева исходных текстов.

Однако, чтобы вытащить все автоматически сгенерированные артефакты из дерева исходных текстов, требуется гораздо больше работы.

У нас есть скрипт, который копирует изменения из исходного дерева в working_copy, тщательно сохраняя скрипт configure и т. Д. В working_copy, что позволяет исходному дереву исходного текста быть нетронутым. Однако это очень неэффективно, поэтому я бы не советовал.

Я бы порекомендовал нормальную сборку вне дерева, а затем явно исключить оставшиеся автоматически сгенерированные файлы в дереве исходного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...