最近この問題も出てきました。プロジェクトをサブプロジェクトに分割すると、はるかに複雑になり、少なくとも私の最初の試みでは、フラットアウトは機能しませんでした。それから、CONFIG += object_with_source
とCONFIG += object_parallel_to_source
を試しましたが、どちらも私のQtバージョンでは動作しませんでした。
だから、これは(Visual Studioの2010年に、他のバージョンと同じように動作するかどうかはわからない)私はそれを解決する方法である:
プロジェクトは、通常のVisual Studioプロジェクトではなく、qmakeはによって生成された1だった場合Visual Studio 2010 & 2008 can't handle source files with identical names in different folders?(プロジェクト設定 "C/C++"> "出力ファイル"> "オブジェクトファイル名"に%(RelativeDir)
を追加することにより、オブジェクトファイルの出力ディレクトリを相対ディレクトリに変更することができます)。
明らかに、QMakeで新しいVisual Studioプロジェクトを作成するたびに手動で行う必要はないので、なぜ自動化しないのですか?結局のところ、Visual Studioのプロジェクトファイルは普通のXMLファイルです。前と後の差分を見ると、オプションが表示され、ObjectFileName
という単一のユニークなタグに保存されます。
だから私はこのPythonスクリプトを書いた:
import sys
filename = sys.argv[1]
f = open(filename, "r", -1, "utf-8-sig")
lines = f.readlines()
f.close()
f = open(filename, "w", -1, "utf-8-sig")
for line in lines:
line = line.replace("</ObjectFileName>", "%(RelativeDir)\</ObjectFileName>")
f.write(line)
f.close()
を..and私はいつものVisual Studioプロジェクトを作成するために呼び出す私のバットファイルでこのようにそれを使用します。
qmake -tp vc myproject.pro
@cd ../scripts
unflatten_vcproj_obj_output.py "../src/myproject.vcxproj"
@pause
を美しい解決策ではありませんが、機能します。
注:この機能は削除されました。http://qt.gitorious.org/qt/qtbase/commit/a72420d012fd09f0a79ae75b77eb1c3bbff75669/diffs –
削除コミットの新しいアドレス:http://code.qt.io/cgit/ qt/qtbase.git /コミット/?id = a72420d012fd09f0a79ae75b77eb1c3bbff75669 – SGaist