2015-05-16 2 views
1

... Извините, это должно быть дубликат, но я просто просматриваю ответы для людей, которые создают собственные проекты и могут изменять настройку системы сборки.Отдельный сборник для проектов autotools, не предназначенных для использования.

Могу ли я всегда компилировать программу в отдельном каталоге сборки или она должна поддерживаться системой сборки программы?

Для Vim, вы собираете с помощью: "./configure & & сделать & & Sudo сделать установку". Если я в vim.hg.build и запустить "../vim.hg/configure .....", я получаю:

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

Для мерзавца, вы собираете с помощью: «сделать Configure & & ./configure & & & & sudo make install ". Я надеялся быть в git.git.build и работает «make -directory = ../git.git configure», но это оставляет файл конфигурации в файле ../git.git. Ну, может быть, просто настроить позади не так уж плохо, поэтому я тогда попытался «../git.git/configure», который успешно создал 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, делает только изменять существующие файлы и подкаталоги, так что даже если я могу построить этот путь, каталог сборки осталось не более чем символических ссылок - никакого фактического разделения.

Go cmake!

ответ

1

Древовидная конструкция является особенностью Autotools, которая требует как Autoconf, так и Automake.

Vim и Git используют только Autoconf, а не Automake, поэтому они не могут воспользоваться этой функцией.

Как более общий ответ на ваш вопрос: простые проекты Autotools должны автоматически работать с внешними сборками. При использовании некоторых дополнительных функций необходимо проявлять некоторую осторожность, чтобы гарантировать, что сборка из дерева продолжает работать. Иногда проекты этого не делают.

(Запуск make distcheck испытает вне дерева здания, так что это хорошая идея, чтобы запустить его, по крайней мере один раз, прежде чем сделать выпуск.)