2015-01-26 6 views
0

Мой текущий Makefile.am выглядит примерно так:Объекта в Makefile.am

bin_PROGRAMS = MyProgram 

AM_CPPFLAGS = -I../shared 

MyProgram_SOURCES = main.cpp Source1.cpp ../shared/Source2.cpp 

clean : clean-am 
     rm -f *~ 
     rm -f DEADJOE 

distclean: distclean-am 
     rm -f *~ 
     rm -f DEADJOE 
     rm -f Makefile 
     rm -f *log 

Это создает все .o файлов в текущем каталоге. Как я могу указать другой каталог объектов в Makefile.am? Я не смог найти это в документации GNU, хотя я уверен, что он должен быть где-то там.

+0

Вам определенно нужен отдельный каталог объектов или будет использовать полностью отдельный каталог компоновки? Это сделать каталог 'build' (или любой другой) рядом с (или под или где-то) исходным каталогом и запустить' configure' оттуда. Это должно помещать все сконфигурированные/встроенные файлы в этот каталог вместо исходного каталога, который я считаю. –

+0

Эта идея портит объект, не имея этих временных файлов .o, загромождает исходный каталог. В обычном Makefile я обычно делаю что-то вроде префикса исходных файлов (с ./obj), а затем добавляю путь ./obj в левой части цели (ов). – Lieuwe

+1

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

ответ

0

Вы не можете сделать это в Makefile.am. Этот подход обычно не поддерживается autoconf и automake вообще.

Вместо этого Automake поддерживает настройку и построение вне исходного дерева. Итак, в вашем текущем дереве, «make distclean», тогда:

mkdir ../build 
cd ../build 
../src/configure 
make