同じ名前のソース ファイルをたまたま含むいくつかのフォルダーを含むプロジェクトがあります。
ソースツリーは次のようになります。
project.pro
foo/
conflict.h
conflict.cpp
bar/
conflict.h
conflict.cpp
some.h
other.h
files.h
main.cpp
デフォルトでは、qmake は次のようなビルド ツリーを生成する Makefile を生成します。
conflict.o
main.o
target
との両方conflict.o
の結果のオブジェクト ファイルはどこにありますか。foo/conflict.cpp
foo/conflict.h
それらは外部ツールを使用して生成され、異なるファイル名を強制すると内容が変更されることを意味するため、名前を変更することはできません。したがって、これはオプションではありません。
また、qmakeテンプレートを使用したくありませんSUBDIRS
。これは、(1)すべてのサブディレクトリがライブラリとして個別にビルドされ、したがってビルドプロセス全体が(少なくとも私の目には)非常に複雑になり、(2)トップレベルでディレクトリ ソース ファイルがありません。それとも私が間違っていますか?
オブジェクトファイルをビルドディレクトリ内の別のディレクトリに書き込むようにqmakeに指示することはできませんか? したがって、ビルド ツリーは次のようになります。
foo/
conflict.o
bar/
conflict.o
main.o
target
または、ソース ファイルの名前を変更したり、静的ライブラリのような複雑なものを導入したりする必要のない他のソリューションはありますか? Qt がこの (私の目には単純な) 問題を何年も解決できなかったとは信じられません。(私はすでにこの問題を4年前に嫌っていますが、そのプロジェクトのファイルの名前を変更することはできましたが、ここではできません。)
重要な場合:G ++を使用したUbuntuとmingw32を使用したWindowsの両方でQt 4.8を使用しています。