Как собрать определенный файл из пакета GNU Automake?

Как собрать определенный файл из пакета GNU Automake?

При наличии исходного пакета, использующего GNU Automake, типичная сборка выглядит следующим образом:

cd ${srcdir}
./congigure
./make

Чтобы создать один файл, а не все сразу, makeобычно достаточно сделать следующее:

$ make path/to/file

Однако это возвращает ошибку:

make: *** No rule to make target 'path/to/file'. Stop.

Требуемый файл находится в подкаталоге, который содержит свой собственный makefile. Можно перейти в этот подкаталог и сделать это ./configure && make fileтам, каждый раз , когда что- makeто не получается, проделывая то же самое, чтобы предоставить эти зависимости, и повторяя процесс до тех пор, пока не будет makeуспешно сгенерирован требуемый файл.

Но ведь должен же быть более простой способ...?

Итак, если предположить, что типичный пакет Linux собирается без проблем с помощью GNU Automake, можно ли заставить его собрать один файл (в частности, двоичный исполняемый файл)?

решение1

Если в подкаталоге есть make-файл, вам, вероятно, придется вызвать этот make-файл.

make -C path/to file

решение2

Лучшее, что мне удалось придумать, — это использовать forцикл для создания зависимых подкаталогов, а затем создать файл из его каталога:

for lib in dependency1 dependency2 dependency3
do
  cd ${srcdir}/libs/${lib}
  ./configure --prefix=/usr
  make LDFLAGS+=-lstdc++
done

cd ${srcdir}/libs/directory

./configure --prefix=/usr
  --localstatedir=/var \
  --mandir=/usr/share/man
make LDFLAGS+=-lstdc++ file

Это не ответ на вопрос, но, боюсь, это лучшее, что может быть...

Связанный контент