2017-12-08 9 views
9

私はTextTransform.exeを使用して複数のC++ファイルを生成しています。このツールはVisual Studio for C++プロジェクト内で直接サポートされていないため、コマンドライン(inspired by T4 Generating C++ Code)で呼び出すことができます。C++トランスフォームT4テンプレートは出力ファイルを無視します

複数のファイルを生成するために、私はhttps://github.com/areve/Entity-Framework-T4-Templates/blob/master/src/dev/MultiOutput.ttを使用します。そのため、ツールで生成される標準出力は必要ありません。私は、Microsoft Windowsを使用してい

"C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe" 
-out "<what to put here that NO file is generated?>" 
C:\Test.tt 

は、私のようなTextTransform.exeを呼び出します。おそらく、プログラムによって受け入れられる特別な文字を提供するための "ハック"があるかもしれませんが、実際にファイルを作成することはできません。

このコマンドを実行するとNOファイルを生成するコマンドはありますか?


更新

NULを使用して@ImprobabilityCastで述べたように移動するための方法です。それは私がメッセージで失敗しているとのTTファイルを実行するすべてのファイルが、カスタムビルド生成していないです:

Performing Custom Build Tools 
CUSTOMBUILD : error : FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use of "\\.\" in the path. 

を私が欲しいものに達するが、それは、ビルドアクションが失敗しているように、「素敵」ではありません。

答えて

0

を。 Microsoft Visual Studioではカスタムビルドツールで複数の行を入力できるので、必要のないTextTransform.exeで生成されたファイルを削除できます。

だから私は2行になりました「コマンドライン」containtに入れコマンド:

"C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe" -out "%(DefiningProjectDirectory)$(TempOutputFile)" C:\Test.tt 
DEL /F "%(DefiningProjectDirectory)$(TempOutputFile)" 

最初の行は、私が私にはない、出力ファイルを含めたいすべてのファイルを作成し、実際のTextTransformコールがあります必要がありますが、作成するのをやめることはできません。 2行目は、必要のないファイルを削除します。

このコマンドは、プロジェクト変数が "TempOutputFile"を呼び出すと予想します。このようにして、私はすべてのタイプミスをスキップします。例:

<PropertyGroup Label="Globals"> 
    <TempOutputFile>DoNotCheckin.h</TempOutputFile> 
</PropertyGroup> 
1

いいえ。テキスト変換の方法は、単一の出力ファイルを生成すると考えられていました。マルチ出力はT4テンプレートの論理的進化でしたが、マイクロソフトはこれまで何年も進化していません。

あなたが使用しているコードは、基本的にそれを巡るハックです。これは、EnvDTEを使用してプロジェクトシステムを操作する非常に醜い方法を使用します。これは、MSがそのシステムを書き直すことを決定したとき(そしてその日が来ると主張することができる)

T4-エディタは、例えば、同じことを達成するためのわずかに異なる方法を持っていますが、出力はまだ「ダミーファイル」を生成することがわかります。

http://t4-editor.tangible-engineering.com/blog/how-to-generate-multiple-output-files-from-a-single-t4-template.html

+0

回答ありがとうございます。私はそれがサポートされていないことを知っているし、私はEnvDTEのハックを知っている。私はハックの周りにハックを探します;-) –

6

わからないなぜドンをファイルは必要ですが、...

Linuxでは、/dev/nullと呼ばれるすばらしいものがあります。これは本質的にはこのようなもののための空のボイドです。私はクイック検索を行なったし、Windowsがそれ自身のequivilentありますNUL

したがって、あなたがしたいコマンドがある:私は私の問題のためにsatisfingソリューションを見つけた

"C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\ 
TextTransform.exe" -out NUL C:\Test.tt 
+0

あなたの返事ありがとうございます。私は確かにそれを確認します。私は自分でttファイル内に複数のファイルを作成するので、ツールで作成された標準ファイルは望んでいません。 –

+0

更新された質問をご覧ください。多分それを修正する方法もあります。 –

+1

これは厳しいものです。たぶんあなたがやっていることをするための別の方法があります。 – ImprobabilityCast

関連する問題