/
CMake.ump
71 lines (57 loc) · 2.42 KB
/
CMake.ump
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
namespace cruise.umple.cpp.gen;
class GenerationTemplate {
depend cruise.umple.core.GenerationPolicyRegistry;
depend java.util.stream.Collectors;
immutable GenerationPolicyRegistry g;
String join(String id, Object... element){
return this.getG().getValues(id, element).stream().map(Object::toString).collect(Collectors.joining("\n"));
}
String string(String id, Object element){
return this.getG().getString(element, id);
}
}
class Header {
isA GenerationTemplate;
depend cruise.umple.core.GenerationPolicyRegistry;
depend cruise.umple.modeling.handlers.IModelingElementDefinitions;
depend cruise.umple.modeling.handlers.cpp.ICppDefinitions;
depend cruise.umple.core.Generator;
depend cruise.umple.cpp.core.IGenerationCommonConstants;
depend java.util.stream.Collectors;
depend cruise.umple.cpp.core.ContentsDescriptor;
//////////////////////////////////////////////////////////////////////////
cMakeFoldersT <<!include_directories(<<=directory>>)
!>>
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
cMakeT <<!cmake_minimum_required(VERSION 3.6)
project(<<=projectName>>)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(${CMAKE_SOURCE_DIR})
<<=this.getG().generator.generate(Generator.HEADER_CMAKE_FOLDER, element)>>
set(SOURCE_FILES
<<=includes>>)
add_executable(<<=projectName>> ${SOURCE_FILES})!>>
////////////////////////////////////////////////////////////////////////
emit cMake(Object element, String projectName, String includes)(cMakeT);
String cMake(Object element){
String directory= this.string(IModelingElementDefinitions.NAME, element);
String collect = this.getG().getValues(IGenerationCommonConstants.CONTENTS_DESCRIPTORS).stream().map(t -> {
ContentsDescriptor descriptor= (ContentsDescriptor) t;
String path = descriptor.getPath();
if(path.isEmpty()){
return descriptor.getFileName();
}
return path+ "/"+ descriptor.getFileName();
}).collect(Collectors.joining("\n"));
return cMake(element, directory, collect);
}
emit cMakeFolders(String directory)(cMakeFoldersT);
String cMakeFolders(){
StringBuilder sb= new StringBuilder();
this.getG().getValues(ICppDefinitions.MAKE_FOLDERS).stream().forEach(directory -> {
_cMakeFolders(0, sb, directory.toString());
});
return sb.toString();
}
}