Les deux CONFIG += ordered
et target.depends =
ne sont pas pris en charge par le backend MSVC de qmake (générateur de solution). Retour en 2010 avec Qt 4.7 autour, les documents ne mentionnent pas, mais dans Qt 4.8 les développeurs ont mis à jour la documentation accordingly (voir les remarques de la section cible):
- .depends Ce sous-projet dépend spécifié sous-projet. Disponible uniquement sur les plates-formes qui utilisent les fichiers makefiles.
- L'option commandée n'est pas prise en charge pour Visual Studio.
Mais ils avaient fourni une solution de contournement (dont il est question dans ce cryptic post), et il est toujours valable et même documenté dans la même section target. Dommage que je devais reconstruire qmake et utiliser un débogueur pour vérifier que:
a) Il y a un projet Lib/DLL dont TARGET (le .lib est utilisé et non le .dll) est utilisé sur la ligne de liaison d'un autre projet de votre solution (vous pouvez modifier la ligne de liaison avec LIBS).
b) Il existe un projet Exe dont TARGET est utilisé dans une étape de construction personnalisée d'un autre projet de votre solution.
- Vous n'utilisez pas de chemins dans la variable TARGET (utilisez DESTDIR/DLLDESTDIR pour cela), par exemple, TARGET = $ (SOME_VARIABLE)/myLib, ne fonctionnera pas.
- Si vous avez un emplacement spécial pour vos bibliothèques, spécifiez -Lmy/library/path et LIBS + = mylib, au lieu de simplement utiliser LIBS + = my/library/path/mylib
- Les projets feuille sont créés avant de générer le fichier de solution. (Vous pouvez utiliser le drapeau récursive pour qmake de le faire, comme "qmake vc -r -tp [yourproject.pro]"
Fondamentalement, qmake généreront la dépendance lorsque le nom de la cible de votre lib (yourlib.lib
) est égal à celui des bibliothèques d'importation de l'application finale (qui a LIBS += yourlib.lib
). (Voir qmake's source où les bibliothèques d'importation sont ajoutées en tant que dépendances, et un little further où ils sont comparés avec les noms cibles du projet)
ici est l'installation minimale qui génère des dépendances dans la solution:
solution.pro
TEMPLATE = vcsubdirs
SUBDIRS = main app
app/app.pro
LIBS += main.lib
main/main.pro
TARGET = main
TEMPLATE = vclib
Avec ceux-ci, si vous exécutez qmake -r -tp vc
, vous obtiendrez la dépendance explicite dans le produit .sln:
GlobalSection(ProjectDependencies) = postSolution
{E634D0EB-B004-3246-AADA-E383A376158F}.0 = {1BD6E999-63E6-36F5-99EE-1A650332198C}
EndGlobalSection
Je suis sur chaque ensemble de documents que je peux trouver. Et fait beaucoup de plongée à la source pour démarrer. En remarque, les fichiers makefiles générés par qmake semblent avoir les dépendances correctes. C'est le .sln qui a le problème. –
@Michael: voulez-vous dire les fichiers .vcproj individuels (puisque je crois que c'est là que ces dépendances vivent). –
Je l'aurais deviné vécu dans le fichier .sln, car c'est le fichier qui connaît tous les différents projets et peut les relier aux dépendances dont j'ai besoin. –