Afin de garder mon projet Qt organisé (en utilisant Qt Creator), j'ai un fichier .pro et plusieurs fichiers .pri. Tout récemment, j'ai ajouté une classe à un de mes fichiers .pri qui a le même nom de fichier qu'une classe qui existait déjà dans un fichier .pri séparé.Qt MOC Filename Collisions utilisant plusieurs fichiers .pri
La structure du fichier et les fichiers makefile générés par qmake semblent être inconscients de la collision de nom de fichier qui s'ensuit. Les fichiers moc_ * générés sont tous lancés dans le même sous-répertoire (soit release ou debug, selon) et l'un finit par écraser l'autre. Lorsque je tente de rendre le projet, je reçois plusieurs avertissements qui ressemblent à ceci:
Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`
Et le projet ne lien.
Voici un exemple simple de ce dont je parle.
Structure du répertoire:
+ project_dir | + subdir1 | | - file.h | | - file.cpp | + subdir2 | | - file.h | | - file.cpp | - main.cpp | - project.pro | - subdir1.pri | - subdir2.pri
Contenu de project.pro:
TARGET = project
TEMPLATE = app
include(subdir1.pri)
include(subdir2.pri)
SOURCES += main.cpp
Contenu du subdir1.pri:
HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp
Contenu du subdir2.pri:
HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp
Existe-t-il un moyen de dire à qmake de générer un système qui place les fichiers moc_ * des fichiers .pri séparés dans des sous-répertoires séparés?
Je ne suis pas nécessairement avec l'argument de la confusion que mes déclarations comprennent seraient généralement de la forme: #include « subdir1/fichier.h » Nontheless, vous semblez être correct. Les noms de fichiers uniques semblent être la seule façon d'y aller. – Stephen
Je crois que les fichiers moc et les fichiers objets ne vont pas entrer en collision maintenant si vous avez suivi le mien .. Par opposition à votre commentaire si :) Corrigez-moi si le mien est faux .. – liaK