If you like to organize your project by keeping source files in different subdirectories, you should know that during a build qmake will not preserve this directory structure and it will keep all the ".o" files in a single build directory. This can be a problem if you had conflicting file names in different directories like following.
src/file1.cpp
src/plugin/file1.cpp
Now qmake will decide to create two "file1.o" files in a build directory, causing one of them to be overwritten by another. The buld will fail. To prevent this you can add CONFIG += object_parallel_to_source
configuration option to your "pro" file.
This will tell qmake to generate build files that preserve your source directory structure. This way your build directory will reflect source directory structure and object files will be created in separate subdirectories.
src/file1.o
src/plugin/file1.o
Complete example.
QT += core
TARGET = myapp
TEMPLATE = app
CONFIG += object_parallel_to_source
SOURCES += src/file1.cpp \
src/plugin/file1.cpp
HEADERS += src/plugin/file1.h
Note that object_parallel_to_source
CONFIG
option is not officially documented.