Question

Comme je l'ai dit dans une question précédente, je prévois sur le portage d'un projet Qt de VC ++ pour QtCreator.

Le projet se compose de 4 sous-projets: 3 d'entre eux sont libs et le dernier fait l'exe. Les sous-projets sont disposés en couches, ce qui signifie que chaque couche a compiler et dépendances temporelles de liaison aux couches en dessous.

Les fichiers sont organisés comme suit:

root
  lib1
  lib2
  lib3
  main

Je l'ai créé chacun des sous-projets QtCreator à partir de zéro. Chaque dossier contient un fichier pro avec le même nom (par exemple: lib1 -> lib1.pro). En utilisant cette approche, j'ai construit tous les projets, sauf le dernier qui doit relier l'exécutable. Je recevais des erreurs de l'éditeur de liens que je fixe en modifiant manuellement le fichier pro et en ajoutant le code ci-dessous:

LIBS +=  ../path/lib1.a \
   ../path/lib2.a \
   ../path/lib3.a

Tout va bien, sauf que maintenant lib3 se plaint qu'il ne peut pas trouver les symboles de lib2 et lib1. Addind LIBS au fichier lib2.pro ne fonctionne pas.

J'ai le sentiment que je ne reçois pas la façon dont QtCreator fonctionne avec libs et executables. Comment comptez-vous organiser un tel projet afin qu'il compile et liens correctement?

Était-ce utile?

La solution

Après avoir travaillé sur le problème un peu plus, je me suis souvenu que, pour la chaîne d'outils GCC l'ordre des paramètres de l'éditeur de liens est important.

Inverser les entrées de LIBS a fait l'affaire.

Autres conseils

Je suis heureux de vous voir trouvé la réponse. Vous pouvez également ajouter:

CONFIG += ordered

à votre fichier de répertoires racine (il est valable uniquement dans le profil « SUBDIRS »). Il oblige qmake à générer Makefiles qui préservent l'ordre dans lequel vous les avez énumérés en toutes circonstances.

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