2017-12-08 13 views
9

저는 복수의 C++ 파일을 생성하기 위해 TextTransform.exe을 사용하고 있습니다. 이 도구는 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 파일을 생성하는 명령을 제공 할 가능성이 있습니까?


업데이트 @ImprobabilityCast이 NUL를 사용하여 언급 한 바와 같이

가 갈 수있는 방법입니다. 그것은 내가 메시지와 함께 실패와 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로 생성 된 파일을 삭제할 수 있음을 깨달았습니다.

그래서 두 줄 이제 "명령 줄"이 (가) 포함 투입 명령 :

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

첫 번째 줄은 나에게 내가하지 않는 출력 파일을 포함하여 원하는 모든 파일을 생성하는 실제 TextTransform 호출입니다 필요하지만, 만들어지기를 멈출 수는 없습니다. 두 번째 라인은 내가 필요없는 파일을 삭제합니다.

이 명령은 프로젝트 변수가 "TempOutputFile"을 호출 할 것으로 예상합니다. 이 방법으로 어떤 오타도 건너 뜁니다. 예 :

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

아니요. 텍스트 변환 방식은 단일 출력 파일을 생성하는 것으로 생각되었습니다. 다중 출력은 T4 템플릿에 대한 논리적 인 진화 였지만 Microsoft는 수년 동안 진화하지 않았습니다.

내가 사용하는 코드는 근본적으로 해킹입니다. 그것은 매우 추악한 방법으로 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

확실하지 왜 돈을 파일을 필요로하지 않지만 ...

리눅스에서는 /dev/null이라는 훌륭한 것을 가지고 있습니다. 나는 빠른 검색을했고, 윈도우는 자신의 equivilent 있습니다 NUL

따라서, 원하는 명령은 : 내 문제에 대한 부합 하 솔루션을 발견했습니다

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

답장을 보내 주셔서 감사합니다. 나는 확실히 그것을 확인할 것입니다. 나 자신이 tt 파일 내에 다중 파일을 만들 때부터 도구로 만든 표준 파일을 원하지 않는다. –

+0

업데이트 된 질문보기 어쩌면 당신은 그것을 고치는 방법에 대한 또 다른 생각을 가지고있을 것입니다. –

+1

그건 힘든 일입니다. 어쩌면 당신이하고있는 일을하는 다른 방법이있을 수 있습니다. – ImprobabilityCast