qmakeのプロジェクトに同じ名前のソースファイルがある場合の設定
qmake はデフォルトでは .pro の SOURCES に書かれているソースファイルをコンパイルする際に、ビルドディレクトリの直下にオブジェクトファイルを生成します。
SOURCES = a.cpp b/b.cpp c/c/c.cpp
となっている場合、ビルドディレクトリ直下に a.o, b.o, c.o が生成されます。
ほとんどのケースではこれで問題ないのですが、名前空間の利用機会の増加に伴ってたまに同じ名前のソースファイルが複数存在するような設計にすることがあります。
SOURCES = api/user/get.cpp api/user/post.cpp api/group/get.cpp api/group/post.cpp
この場合、そのままビルドをすると、ビルドディレクトリ直下の get.o が上書きされてしまい、最終的には Undefined Reference to Get::〜〜〜 のようなエラーになるでしょう。
(たまたまエラーにならなかった場合には、それはそれで問題がより深刻になりそうです。)
ということで、こういった場合には、.pro ファイルに以下の設定を追加し、ソースディレクトリのツリー構造に沿った形でビルドを行うようにしましょう。
CONFIG += object_parallel_to_source
これによってビルドディレクトリ以下に api/usr/get.o api/user/post.o api/group/get.o api/group/post.o といった形でオブジェクトファイルが生成されるようになります。