CMakeSourceListGenerator.cpp
Go to the documentation of this file.
2 
3 namespace armarx
4 {
5 
7  {
8  }
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
armarx::CMakeSourceListGenerator::CMakeSourceListGenerator
CMakeSourceListGenerator()
Definition: CMakeSourceListGenerator.cpp:6
armarx::CMakeWriter::getString
std::string getString()
Definition: CMakeWriter.cpp:56
armarx::CMakeSourceListGenerator::GenerateCMakeFileNextGen
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)
Definition: CMakeSourceListGenerator.cpp:53
armarx::CMakeWriter
Definition: CMakeWriter.h:12
armarx::CMakeWriter::line
void line()
Definition: CMakeWriter.cpp:38
armarx::CMakeSourceListGenerator::GenerateCMakeFile
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)
Definition: CMakeSourceListGenerator.cpp:11
CMakeSourceListGenerator.h
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27