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, make
normalmente 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 file
isso, resolver as dependências ausentes cada vez que make
falhar, fazendo algo semelhante para fornecer essas dependências e repetindo o processo até make
gerar 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 for
loop 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 ...