Question

J'ai un programme assez important écrit en C. Il couvre plusieurs fichiers, et a un peu de réoutillage pour tenter de compenser les problèmes de la plate-forme. Plus précisément, j'ai des fichiers d'en-tête pour les différents systèmes d'exploitation, des architectures et des compilateurs qui définissent des macros qu'il utilise pour gérer les choses. À titre d'exemple, l'impression de drapeau -v version info, y compris le nom du compilateur qui l'a construit, et le système d'exploitation et l'architecture, il a été construit sur. À titre d'exemple des raisons pour lesquelles il est important, le programme peut créer un fichier de code C et, si vous le souhaitez, le compiler - une tâche pour laquelle il est tout simplement un appel système quel que soit le compilateur il a été construit avec.

Il a également le soutien de la bibliothèque GNU Readline (ou la bibliothèque editline BSD - même chose) si elle se trouve sur votre système, ainsi qu'un équivalent sans toutes les belles caractéristiques readline qui est ANSI pur si vous ne avoir.

La ligne de fond est, je ne peux pas prendre un quelconque des bits dépendant de la plate-forme, comme plusieurs fonctions dépendent plutôt fortement de l'OS / architecture / compilateur que vous avez. Je veux aussi offrir une bonne fonctionnalité à ceux qui en ont. Et je veux que les gens à télécharger et à l'installer avec une norme ./configure, et make l'interface make install.

Actuellement, je suis en utilisant un script shell main désolé pour qui crée le configure Makefile à partir de zéro, et détermine les fichiers d'en-tête pour inclure, en fonction de votre OS / architecture / compilateur. Je voudrais une approche plus efficace, et je voudrais utiliser un système de construction plus standard en utilisant GNU Autotools. De cette façon, je sais que ce que je fais va travailler sur quelqu'un d'autre ordinateur sans avoir à tester autour sur leurs ordinateurs.

Ma question, pour ceux d'entre vous qui ont avancé péniblement à travers tout cela (! Merci), est: 1) Comment puis-je aller sur le passage d'un système de construction homebrew à GNU Autotools? 2) A quoi bon tutoriels sont là pour commencer avec GNU Autotools? 3) Comment puis-je faire un processus relativement indolore?

Était-ce utile?

La solution

La 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 caractéristiques non-portables. Ensuite, vous renommez à configure.ac , modifier en conséquence et écrire Makefile.am fichiers.

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

Autres conseils

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

Le système de construction GNU

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top