まず、私がやろうとしていることは正常ではなく、通常は適切にアドバイスされていないという私の理解を表明することから始めましょう. "
通常の XML では、文字が予約されていることは十分承知しています。
.vcxproj
Qt アプリケーションを使用して、Visual Studio 2010 で使用するファイルを生成しています。このクラスを利用QXmlStreamWriter
して、プロジェクト ファイルに必要な XML を記述しています。しかし、Microsoft が XML 標準に準拠していないため、問題が発生しています。
CustomBuild
要素では、ユーザーはファイルを構築するためのコマンドを指定する必要があります。Visual Studio 内の Qt プロジェクトの場合、次のようになります。
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o "..\myproj\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_OPENGL_LIB -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_SVG_LIB "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtSql" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\Qt3Support" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtTest" "-I..\myproj"</Command>
うんざりですが、特にマイクロソフトでは、 c'est la vieです。残念ながら、私のQXmlStreamWriter
オブジェクトは次の (完全に準拠した) 出力を生成します。
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe" "%(FullPath)" -o "..\myproj\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_OPENGL_LIB -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_SVG_LIB "-I." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtSql" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\Qt3Support" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtTest" "..\myproj"</Command>
当然、Visual Studio は感銘を受けません。ここでのオプションは何ですか? おそらくファイルを読み戻してエスケープを解除することもできますが、それは特に効率的でも賢くもありません。