Question

Je me sens ces derniers temps la nécessité d'apprendre un outil de construction. Je suis à la recherche par le biais de recommandations et StackOverflow Gnu faire est à peine mentionné. Au lieu de cela, je vois Ant, Maven, CMake, Scon et bien d'autres. Cependant, quand je regarde les petites "sources voyous" (comme dans non-in-the-repo) que je dois parfois compiler, ils ont tous besoin les étapes de make && make install.

est l'apprentissage Faire un mauvais investissement de mon temps que d'apprendre un autre outil?

Si oui, pourquoi est-il encore si populaire?

Était-ce utile?

La solution

Faire est la outil de construction standard pour tout C / C ++. Beaucoup d'autres ont intensifié à la plaque, mais même quand ils ont été utiles et avec succès, ils jamais atteint l'ubiquité de faire.

Marque est installé sur pratiquement toutes les machines Unix là-bas. Peu importe si vous travaillez avec AIX, Solaris, Irix, BSD ou Linux, s'il y a un compilateur installé, il est fait également.

Certains des « remplacements » (comme Automake, CMake) même créer Makefile, qui sont à leur tour exécutés par marque.

Je définitivement recommande de se familiariser avec make. En cas de manipulation par une personne qui a pris le temps de en savoir au sujet de faire, il est un outil puissant, qui peut être utilisé dans un certain nombre de façons même pas nécessairement liés au développement du logiciel.

Même si vous finissez à l'aide d'un outil de construction différent à la fin, vous serez en mesure de « recycler » les leçons apprises avec faire, comme les concepts sous-jacents sont assez similaires. Et le grand nombre de projets de maquillage construit signifie qu'il y aura toujours la chance que vous devez trouver un Makefile existant.

Une chose, cependant. Obtenez-le dès le début.

Autres conseils

Je pense que la raison pour laquelle vous ne voyez pas (GNU) FAIS mentionné est qu'il est souvent la valeur par défaut; si vous avez un GNU toolchain, vous aurez déjà faire. Ainsi, la plupart des gens qui commencent à parler des outils de construction, parler d'autre chose.

Dans mon expérience, faire est très bien, mais il peut être une sorte de difficile à obtenir pour faire exactement ce que vous voulez. Il est peut-être un peu Arcane, mais il est prouvé et fonctionne.

La marque est populaire parce qu'il est utilisé (principalement) pour les sources C / C ++ sous Linux / * Projets nix, et est beaucoup plus que tous les autres outils que vous avez mentionné, il a ainsi résisté à l'épreuve du temps et est arrivé à maturité . Un peu comme le goudron.

Pour être honnête avec vous, je ne sais faire. Ces autres outils ci-dessus peuvent être mieux, mais tant de projets utilisent juste un Makefile de base que vous êtes mieux connaître au moins un peu de celui-ci. Non seulement pour vos propres projets au travail, mais la plupart de ceux open source que vous trouverez sur le net.

Cela dépend vraiment de combien vous allez l'utiliser.

Si en glissement annuel travaille beaucoup avec C / C ++ faire des projets, alors oui, je recommande en apprendre davantage à ce sujet comme un gros fichier make a une courbe d'apprentissage plus raide que d'autres outils de construction que vous mentionnez.

Si vous ne travaillez pas avec faire, ou travailler dans d'autres langues telles que C #, Java ou PHP alors vous feriez mieux d'apprendre à construire des outils pertinents pour ces langues.

Comme tous les outils, si vous utilisez du tout, vous devriez mettre un certain temps à devenir raisonnablement aptes à elle. En outre, certains outils (comme CMake, par exemple) générer des makefiles et vous pouvez un jour besoin de jouer avec les fichiers générés.

GNU make a excellente manuel - il vaut certainement la peine spendin une heure ou deux lecture.

Marque est le standard de facto sur les systèmes Linux par exemple. Il est un outil très complexe, et aussi un outil très puissant.

Il est bien adapté pour savoir si vous développez C ou C ++, en particulier si le ciblage Linux / * nix.

L'une des caractéristiques de la marque, est que vous pouvez configurer les dépendances pour le moment de reconstruire un fichier. Par exemple. chaque c ou c ++ fichier est construit dans un fichier .obj, et à la fin, tous les fichiers OBJ sont liés à un exécutable. Mais peut-être l'exécutable est une bibliothèque liée statiquement, qui est lié à un autre exécutable avec d'autres fichiers OBJ.

Assurez peut vous assurer que vous la compilation est temps aussi court que possible, parce que vous pouvez définir qu'un fichier c ne doit être compilé si, ou tous les fichiers d'en-tête à charge, sont plus récents que le fichier .obj. Ainsi, toute compilation ou étape de liaison est exécutée uniquement si les fichiers source de courant pour l'étape est plus récent que le fichier cible.

Si vous développez par exemple dans C #, vous n'avez pas besoin de ce genre de vérification des dépendances parce que tous les fichiers .cs sont compilés à la fois en un seul exécutable.

Donc, la conclusion est que vous devez utiliser un outil de construction qui est bien adapté pour votre choix de langage de programmation.

Même si vous finissez par préférer un autre outil de construction (personnellement, je suis aime VS ... Je sais ...) savoir faire se révélera probablement plus utile.

Marque a de nombreuses applications et tandis qu'il est pas toujours idéal pour une seule tâche, en traitant des nouvelles technologies, il est Stalwart et flexible.

Je suppose où vous travaillez est probablement différent, mais je sais que partout où j'ai travaillé, j'aurais été un employé beaucoup moins de valeur si je ne l'avais pas au moins appris à lire Makefile. Même dans tous les environnements Windows VisualStudio, il arrive de temps en temps.

Par exemple, nous avons juste obtenu un emploi qui implique le portage d'un tas de vieux code CX / UX à Windows. L'ancien code a été construit avec makefiles. Il n'y a aucun moyen de comprendre leur ancien système sans savoir lire ces vieux makefile.

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