2009-02-01 12 views
5

J'ai un assez gros programme écrit en C. Il couvre plusieurs fichiers, et a un peu de réoutillage pour tenter de compenser les problèmes de plate-forme. Plus précisément, j'ai des fichiers d'en-tête pour différents systèmes d'exploitation, architectures et compilateurs qui définissent les macros qu'il utilise pour gérer les choses. Par exemple, le drapeau -v affiche les informations de version, y compris le nom du compilateur qui l'a construit, ainsi que le système d'exploitation et l'architecture sur lesquels il a été construit. Pour illustrer pourquoi c'est important, le programme peut créer un fichier de code C et, si vous préférez, le compiler - une tâche pour laquelle il fait simplement un appel système à n'importe quel compilateur avec lequel a été construit.Comment reconfigurer un grand programme pour les Autotools GNU

Il a également le support pour la bibliothèque GNU Readline (ou la bibliothèque BSD Editline - même chose) si elle se trouve sur votre système, ainsi qu'un équivalent sans toutes les bonnes fonctionnalités Readline qui est pure ANSI si vous ne Je l'ai. En résumé, je ne peux retirer aucun des bits dépendant de la plate-forme, car plusieurs fonctions dépendent plutôt fortement de l'OS/architecture/compilateur que vous avez. Je veux également fournir de bonnes fonctionnalités à ceux qui l'ont. Et je veux que les gens à télécharger et l'installer avec une interface standard ./configure, make et make install.

Actuellement, j'utilise un script shell fait main désolé pour configure qui crée le Makefile à partir de zéro, et détermine les fichiers d'en-tête à inclure en fonction de votre OS/architecture/compilateur. Je voudrais une approche plus efficace, et j'aimerais utiliser un système de construction plus standard utilisant GNU Autotools. De cette façon, je sais que ce que je fais fonctionnera sur l'ordinateur de quelqu'un d'autre sans avoir à le tester sur son ordinateur. Ma question, pour ceux d'entre vous qui ont passé à travers tout cela (merci!), Est: 1) Comment passer d'un système de construction homebrew à GNU Autotools? 2) Quels sont les bons tutoriels pour démarrer avec GNU Autotools? 3) Comment puis-je en faire un processus relativement indolore?

Répondre

8

Première chose, vous pouvez exécuter autoscan dans le répertoire racine du projet. Il va scanner l'arborescence du projet et générer configure.scan, tout en essayant de détecter les fonctionnalités non portables. Ensuite, vous le renommer en configure.ac, l'éditer en conséquence et écrire Makefile.am fichiers.

Je vous suggère de rechercher ce processus (en particulier autoscan) dans le manuel de GNU autotools pour les détails. Cela réduira vos efforts, mais au moins, vous ne commencerez pas à zéro avec la création de ces fichiers.

1

Ce lien est ce que j'ai recherché sur Google après avoir lu ce post. Il a répondu à mes questions sur la façon de créer le fichier ./configure.

The GNU Build System