2009-12-09 5 views
1

Dans Microsoft compilateur Visual C++, vous pouvez spécifier des options de l'éditeur de liens en utilisantAide sur la liaison dans gcc

#pragma comment(lib, "MSVCRT") //links with the MVCRT library 

see this page

Je trouve cette fonction très utile, car les erreurs de liaison sont communs et je veux placer juste toutes les options de l'éditeur de liens dans mon code source au lieu de les spécifier au compilateur.

question: Est-il possible de le faire dans gcc (ou dev-cpp ou codeblocks) ure?

Merci d'avance.

+0

Ils peuvent être dans votre code source, il doit juste être le fichier appelé 'Makefile';) – caf

+0

désolé, j'ai été distrait au moment où j'ai posté cette question. Mes appologies –

Répondre

3
+2

L'article de commande de lien auquel vous avez lié indique que l'ordre des liens n'a d'importance, en principe, que pour les liens plus anciens, puisque la plupart des liens modernes recherchent toutes les bibliothèques liées indépendamment de leur ordre. C'est donc une raison plutôt discutable pour l'OMI de ne pas soutenir cela. Au moins, les gens Boost l'utilisent, et ils ne sont généralement pas associés à une mauvaise programmation C++ :) – OregonGhost

1

En résumé, GCC ne prend pas en charge la spécification de bibliothèques à lier dans le code source.

Si votre EDI gère le processus de compilation et de liaison, vous pouvez probablement ajouter des références dans votre EDI et vous inquiéter de transmettre les bonnes options à gcc pour chaque unité.

1

Étant donné que les options de liaison et les noms de bibliothèque varient considérablement d'un système à un, je suis bien content de les avoir séparés de mes fichiers de code source et donc peut garder la système de code source indépendant. Ensuite, le système de construction peut décider comment construire sur quel système. Dans l'ensemble, je dirais que c'est beaucoup plus propre.

+0

Qu'est-ce qui est propre à devoir inclure une bibliothèque deux fois (include fichier et lib)? J'aime l'approche Boost. Incluez simplement le fichier d'inclusion pour une bibliothèque que vous voulez utiliser et c'est tout. – OregonGhost

+1

Sur certains systèmes, vous devez spécifier explicitement '-lm' au moment de la liaison pour obtenir des fonctions mathématiques, sur certains systèmes que vous n'utilisez pas (ou même pas). Ce n'est pas propre, mais réel. La façon la plus propre de gérer des trucs aussi stupides que ça? En dehors de mes fichiers de code source, certainement. – ndim

+0

La réalité n'est pas nécessairement propre, c'est vrai. Cependant, à mon avis, la méthode Boost est de loin la plus facile, parce que vous ne pouvez pas faire grand chose. C'est une bonne chose. – OregonGhost