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

4

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)?

    
por starfry 26.09.2016 / 16:55

2 respostas

2

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

make -C path/to file
    
por 27.09.2016 / 02:47
0

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 ...

    
por 27.09.2016 / 13:50