IDE可以在C#项目下自动识别T4模板文件,但我不知道如何将它们集成到C ++项目中(除了使用make文件)。
有什么想法吗?
答案 0 :(得分:11)
T4模板文件可以集成到C ++项目中,但它比C#/ VB项目要多一些。在C ++项目中创建一个新的文本文件,并为其提供.tt扩展名。然后正常编写模板。然后,C ++项目需要进一步的工作来使其转换模板。我让它工作的快速和脏的方法是添加一个自定义生成步骤,并让它直接调用“C:\ Program Files \ Common Files \ Microsoft Shared \ TextTemplating \ 1.1 \ TextTransform.exe”。我找到的另一种方法是添加自定义MSBuild任务。可以找到说明here
This页面提供了更多信息以及与使用T4代码生成的其他页面的一些良好链接。
答案 1 :(得分:4)
MSBuild任务无法正常工作,因为这是一个vcproj文件(C ++),因此使用了vcbuild。获得编译tt的最简单方法是添加一个自定义构建步骤,如下所示。
"C:\Program Files (x86)\Common Files\Microsoft Shared\TextTemplating\1.1\TextTransform.exe" -out "$(ProjectDir)\VSProject.cpp" -I "$(ProjectDir)" "$(ProjectDir)\VSProject.tt"
我花了几个小时调查上面的MSBuild Task解决方案,它对托管代码非常有用,但是我看不到任何方法将它用于C ++(将vcproj转换为csproj eek)
答案 2 :(得分:1)
其他答案中列出的命令部分不正确,因为文件TextTransform.exe
已移至新目录:devenv
根文件夹,例如:
C:\Progra~1\Visual Studio 2017\Enterprise\Common7\IDE
命令现在应该更新为以下内容:
"$(DevEnvDir)TextTransform.exe" -out "$(ProjectDir)xxx.cpp" "$(ProjectDir)xxx.tt"
其中xxx
是您的.tt
模板文件的文件名
答案 3 :(得分:0)
尝试了以上一些方法(发现它们不适合我的具体情况),我采取了其他方法可能会有所帮助的另一种方法。
我不是为了让VS接受C ++项目中的T4模板,而是向解决方案中添加了一个单独的(空)C#项目。我将模板文件放在解决方案的根目录下,并从C#项目中添加指向它的链接。我#include从我的C ++项目中生成的.h文件。
我使用模板来生成一个版本字符串,该版本字符串随每次构建而更新。我在VS中添加了AutoT4工具,以便随着解决方案的每次构建都更新字符串。