CMakeSourceListGenerator.cpp
Go to the documentation of this file.
2
3namespace armarx
4{
5
9
10 std::string
11 CMakeSourceListGenerator::GenerateCMakeFile(const std::string& groupName,
12 const std::vector<std::string>& stateXMLFiles,
13 const std::vector<std::string>& stateSourceFiles,
14 const std::vector<std::string>& stateHeaderFiles,
15 const std::vector<std::string>& libs)
16 {
17
18 CMakeWriter writer;
19 writer.line("SET(HEADERS ${HEADERS}");
20 for (auto& file : stateXMLFiles)
21 {
22 writer.line(file, 1);
23 }
24 writer.line(")", 1);
25 writer.line();
26 writer.line("SET(HEADERS ${HEADERS}");
27 for (auto& file : stateHeaderFiles)
28 {
29 writer.line(file, 1);
30 }
31 writer.line(")", 1);
32 writer.line();
33 writer.line("SET(SOURCES ${SOURCES}");
34 for (auto& file : stateSourceFiles)
35 {
36 writer.line(file, 1);
37 }
38 writer.line(")", 1);
39
40 writer.line();
41 writer.line("SET(COMPONENT_LIBS ${COMPONENT_LIBS}");
42 for (auto& file : libs)
43 {
44 writer.line(file, 1);
45 }
46 writer.line(")", 1);
47
48
49 return writer.getString();
50 }
51
52 std::string
54 const std::string& groupName,
55 const std::vector<std::string>& stateXMLFiles,
56 const std::vector<std::string>& stateSourceFiles,
57 const std::vector<std::string>& stateHeaderFiles,
58 const std::vector<std::string>& libs)
59 {
60 CMakeWriter writer;
61
62 writer.line("armarx_add_statechart_library(" + groupName + "_statechart");
63
64 // headers
65 if (not stateHeaderFiles.empty())
66 {
67 writer.line("HEADERS", 1);
68 //writer.line("# autogenerated headers", 2);
69 for (const auto& file : stateHeaderFiles)
70 {
71 writer.line(file, 2);
72 }
73 }
74
75 writer.line("STATE_FILES", 1);
76 for (const auto& file : stateXMLFiles)
77 {
78 writer.line(file, 2);
79 }
80
81 // sources
82 if (not stateSourceFiles.empty())
83 {
84 writer.line("SOURCES", 1);
85 for (const auto& file : stateSourceFiles)
86 {
87 writer.line(file, 2);
88 }
89 }
90
91 // dependencies
92 writer.line("DEPENDENCIES", 1);
93 for (const auto& file : libs)
94 {
95 writer.line(file, 2);
96 }
97
98 // if no statechart cpp files are added, generate an interface library with the dependencies attached
99 if (stateSourceFiles.empty())
100 {
101 writer.line("INTERFACE", 1);
102 }
103 // if statechart cpp files are available, generate an object library with the dependencies within the public scope
104 else
105 {
106 writer.line("OBJECT", 1);
107 }
108 writer.line(")", 0);
109
110 return writer.getString();
111 }
112
113} // namespace armarx
static std::string GenerateCMakeFile(const std::string &groupName, const std::vector< std::string > &stateXMLFiles, std::vector< std::string > const &stateSourceFiles, std::vector< std::string > const &stateHeaderFiles, const std::vector< std::string > &libs)
static std::string GenerateCMakeFileNextGen(const std::string &groupName, const std::vector< std::string > &stateXMLFiles, std::vector< std::string > const &stateSourceFiles, std::vector< std::string > const &stateHeaderFiles, const std::vector< std::string > &libs)
std::string getString()
This file offers overloads of toIce() and fromIce() functions for STL container types.