Como construir um arquivo específico a partir de um pacote GNU Automake?

Como construir um arquivo específico a partir de um pacote GNU Automake?

Dado um pacote fonte que usa GNU Automake, a compilação típica é assim:

cd ${srcdir}
./congigure
./make

Para construir um único arquivo em vez de tudo, makenormalmente aceitaria isto:

$ make path/to/file

No entanto, isso retorna um erro:

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

O arquivo necessário está em um subdiretório que contém seu próprio makefile. É possível entrar nesse subdiretório e fazer ./configure && make fileisso, resolver as dependências ausentes cada vez que makefalhar, fazendo algo semelhante para fornecer essas dependências e repetindo o processo até makegerar com êxito o arquivo necessário.

Mas certamente deve haver uma maneira mais fácil...?

Então, assumindo um pacote Linux típico que é compilado de forma limpa pelo GNU Automake, é possível dizer a ele para construir um único arquivo (especificamente, um executável binário)?

Responder1

Se houver um makefile no subdiretório, você provavelmente precisará invocar esse makefile.

make -C path/to file

Responder2

O melhor que consegui fazer foi usar um forloop para criar subdiretórios dependentes e, em seguida, criar o arquivo a partir de seu diretório:

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

Isso não responde à pergunta, mas temo que seja o melhor possível ...

informação relacionada