Como escrever software para compilar com bibliotecas externas?

3

Eu quero codificar o software de código aberto com dependências. Eu tenho habilidades em C / C ++ e um conhecimento mínimo de makefile. Mas estou curioso em codificar isso como ./configure && make stuff e como incluir dependências em outras bibliotecas corretamente.

Onde posso encontrar um tutorial fácil de entender e é difícil aprendê-lo?

    
por ManuelSchneid3r 02.09.2013 / 19:52

2 respostas

3

Eu não acredito que configurar ou fazer seja difícil de aprender. No entanto, eles são complexos, por isso podem ser difíceis de aprender - especialmente através da experimentação. Por exemplo, make requer que os comandos para criar um destino sejam recuados estritamente com um caractere TAB, que é difícil de distinguir dos espaços em muitos casos.

Aqui está uma página que aborda os dois (e mais): link .

E uma página sobre os padrões GNU para configuração: link .

Observe que autoconf é a ferramenta para criar scripts de configuração; Naturalmente, você pode desenvolver seu próprio script de configuração, mas autoconf irá obter o tipo padrão de script e deverá economizar muito esforço de programação.

    
por 02.09.2013 / 20:08
2

Muito disso é feito com autoconf . Eu não tenho nenhum tutorial em particular para recomendar (além da documentação oficial), mas você precisará de um e é isso que você quer procurar. "Autoconf" refere-se coloquialmente a um conjunto de ferramentas, incluindo 'automake'.

Eu não fiz isso por um tempo, mas vou tentar esboçar o processo a partir das minhas anotações:

  • Para cada diretório de origem (não coloque suas fontes no nível superior, coloque-as em subdiretórios), é necessário criar um Makefile.am ; isso segue as regras para um makefile normal, mas não inclui destinos de compilação e, em vez disso, define alguns destinos e variáveis seguindo um esquema de nomenclatura específico para o processo autoconf. Isso será processado por automake .

  • No nível superior, você precisa criar um arquivo configure.ac . A ferramenta autoscan pode fazer isso para você e, em seguida, você pode ajustá-la.

  • Você precisa executar, em ordem, a partir do diretório de nível superior: aclocal , automake -ac , autoheader (e possivelmente automake -ac novamente) e, em seguida, autoconf . Todos eles têm páginas de manual que explicam seu propósito.

Presto! Seu pacote está pronto.

is it a hard thing to learn it?

É definitivamente tedioso e eu não chamaria isso de super fácil, não. Se o seu projeto é pequeno e você está apenas segmentando plataformas específicas, você pode criar um script de verificação de dependência que possa ser executado a partir do makefile.

    
por 02.09.2013 / 20:23