Se houver um makefile no subdiretório, você provavelmente precisará invocar esse makefile.
make -C path/to file
Dado um pacote fonte que usa o GNU Automake, a compilação típica é assim:
cd ${srcdir}
./congigure
./make
Para criar um único arquivo em vez de tudo, make
normalmente aceitaria isso:
$ 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 ir para esse subdiretório e fazer ./configure && make file
, trabalhar com dependências ausentes sempre que make
falhar, fazendo uma coisa semelhante para fornecer essas dependências e repetir o processo até que make
gere com sucesso o arquivo necessário.
Mas certamente deve haver um caminho mais fácil ...?
Então, assumindo um pacote típico do Linux que é compilado de forma limpa pelo GNU Automake, é possível dizer a ele para construir um único arquivo (especificamente, um executável binário)?
Se houver um makefile no subdiretório, você provavelmente precisará invocar esse makefile.
make -C path/to file
O melhor que consegui criar é usar um loop for
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 ...