-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
T4Template.cmake
49 lines (37 loc) · 1.66 KB
/
T4Template.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
find_program(netfx_t4_COMMAND TextTransform.exe REQUIRED)
# A function to set up T4 Templates and their generated code files
#
# t4_templates : A list of T4 Template Files to annotate in the project
# generated_files_var : Target variable to output the set of generated files
function(configure_t4 t4_templates
generated_files_var)
set(generated_files)
foreach(t4_TEMPLATE IN ITEMS ${t4_templates})
if (${t4_TEMPLATE} MATCHES "^(.*/)?([^/]+).tt$")
if (${CMAKE_MATCH_COUNT} EQUAL 2)
set(t4_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_MATCH_1})
set(t4_TARGET_FILENAME ${CMAKE_MATCH_2}.cs)
set(t4_TEMPLATE_FILENAME ${CMAKE_MATCH_2}.tt)
elseif (${CMAKE_MATCH_COUNT} EQUAL 1)
set(t4_TARGET_FILENAME ${CMAKE_MATCH_1}.cs)
set(t4_TEMPLATE_FILENAME ${CMAKE_MATCH_1}.tt)
endif()
set(t4_TARGET ${t4_TARGET_DIR}${t4_TARGET_FILENAME})
endif()
message(STATUS "Processing ${t4_TEMPLATE} => ${t4_TARGET}")
file(MAKE_DIRECTORY ${t4_TARGET_DIR})
exec_program(${netfx_t4_COMMAND}
ARGS "-out ${t4_TARGET}" "${CMAKE_CURRENT_SOURCE_DIR}/${t4_TEMPLATE}")
set(generated_files ${generated_files} ${t4_TARGET})
set_source_files_properties(${t4_TARGET}
PROPERTIES
VS_CSHARP_AutoGen "True"
VS_CSHARP_DesignTime "True"
VS_CSHARP_DependentUpon ${t4_TEMPLATE_FILENAME})
set_source_files_properties(${t4_TEMPLATE}
PROPERTIES
VS_CSHARP_Generator "TextTemplatingFileGenerator"
VS_CSHARP_LastGenOutput ${t4_TARGET_FILENAME})
endforeach()
set(${generated_files_var} ${${generated_files_var}} ${generated_files} PARENT_SCOPE)
endfunction()