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?