2017-01-11 4 views
-1

J'ai perdu la tête juste un peu en essayant de raisonner le moyen le plus efficace de compiler un projet C++. Je m'en tiens à des langages plus gérés comme Java, le fichier CMake est donc un peu obtus.Que compiler en tant que bibliothèque?

Mon principal problème est de savoir ce que je compile en tant que bibliothèque et qu'est-ce que je compile juste ensemble? J'ai une fonction principale dans mon programme avec divers sur les classes dans différents fichiers avec en-têtes. Quelle est la manière la plus normale de gérer ces fichiers ensemble? Dois-je compiler la fonction principale séparée des classes puis les lier ou devrait-elle être une bibliothèque partagée même si elle est un peu petite pour une bibliothèque? Principalement je cherche juste pour les directives générales de ce qui devrait être compilé ensemble, ce qui devrait simplement être lié, et quelqu'un pour expliquer plus clairement les normes/meilleures pratiques de la façon dont tout cela fonctionne.

Je comprends que le compilateur doit convertir les fichiers en-tête et source en fichiers objet, puis les combine ensemble en tant que binaire. Je suis juste confus à ce qui devrait aller dans le binaire.

+0

Si certaines méthodes sont également requises par d'autres processus, il est préférable de les placer dans une bibliothèque. Si vous souhaitez déployer uniquement le binaire unique, rendez la bibliothèque statique, mais cela augmentera la taille binaire. – VivekD

+2

En cas de doute: n'utilisez pas du tout de bibliothèque. Lorsque le projet se développe, vous apprendrez à diviser le code en bibliothèques et en binaires. – usr1234567

+1

Utilisez une bibliothèque à peu près dans les mêmes cas que vous utiliseriez un fichier jar non exécutable en Java. – user4581301

Répondre

1

Si vous avez besoin du code pour un seul exécutable, vous pouvez simplement lier tous les fichiers objet ensemble. Les bibliothèques sont utiles si vous avez besoin des mêmes fonctions/fichiers objets dans différents exécutables.

Bien sûr, plus un projet est important, plus vous pouvez utiliser des sous-projets qui génèrent des bibliothèques, puis lier les fichiers de projet principaux et les bibliothèques de sous-projets.