Qt MOC Filename Collisions using multiple .pri files

Posted by Skinniest Man on Stack Overflow See other posts from Stack Overflow or by Skinniest Man
Published on 2010-06-02T16:24:24Z Indexed on 2010/06/03 5:54 UTC
Read the original article Hit count: 265

Filed under:
|

In order to keep my Qt project somewhat organized (using Qt Creator), I've got one .pro file and multiple .pri files. Just recently I added a class to one of my .pri files that has the same filename as a class that already existed in a separate .pri file.

The file structure and makefiles generated by qmake appear to be oblivious to the filename collision that ensues. The generated moc_* files all get thrown into the same subdirectory (either release or debug, depending) and one ends up overwriting the other. When I try to make the project, I get several warnings that look like this:

Makefile.Release:318: warning: overriding commands for target `release/moc_file.cpp`

And the project fails to link.

Here is a simple example of what I'm talking about.

Directory structure:

+ project_dir
| + subdir1
| | - file.h
| | - file.cpp
| + subdir2
| | - file.h
| | - file.cpp
| - main.cpp
| - project.pro
| - subdir1.pri
| - subdir2.pri

Contents of project.pro:

TARGET = project
TEMPLATE = app
include(subdir1.pri)
include(subdir2.pri)
SOURCES += main.cpp

Contents of subdir1.pri:

HEADERS += subdir1/file.h
SOURCES += subdir1/file.cpp

Contents of subdir2.pri:

HEADERS += subdir2/file.h
SOURCES += subdir2/file.cpp

Is there a way to tell qmake to generate a system that puts the moc_* files from separate .pri files into separate subdirectories?

© Stack Overflow or respective owner

Related posts about qt

Related posts about qmake