+
+bool modelCDMLib::IsLibraryIncluded(const std::string& library_name)
+{
+ if (this->HasCMakeLists())
+ {
+ CDMUtilities::CMLFile cmlFile = CDMUtilities::readCMLFile(this->CMakeLists->GetPath().c_str());
+ for (int i = 0; i < cmlFile.size(); ++i)
+ {
+ if (cmlFile[i].first=="command" && cmlFile[i].second[0] == "ADD_SUBDIRECTORY")
+ {
+ int pos = 1;
+ while (pos < cmlFile[i].second.size())
+ {
+ if (!isspace(cmlFile[i].second[pos][0]) && cmlFile[i].second[pos][0] != '(' && cmlFile[i].second[pos][0] != '#')
+ {
+ if (library_name == cmlFile[i].second[pos])
+ return true;
+ break;
+ }
+ pos++;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+bool modelCDMLib::SetLibraryInclude(const std::string& library_name, const bool& toInclude)
+{
+ if (this->HasCMakeLists())
+ {
+ CDMUtilities::CMLFile cmlFile = CDMUtilities::readCMLFile(this->CMakeLists->GetPath().c_str());
+
+ bool found = false;
+
+ for (int i = 0; i < cmlFile.size(); ++i)
+ {
+ if(toInclude && cmlFile[i].first == "comment")
+ {
+ std::vector<std::string> segments;
+ std::string line = cmlFile[i].second[0];
+ while(line[0] == '#')
+ line.erase(0,1);
+
+ CDMUtilities::splitter::split(segments, line, " ()", CDMUtilities::splitter::no_empties);
+ if (segments.size() > 1 && segments[0] == "ADD_SUBDIRECTORY" && segments[1] == library_name)
+ {
+ found = true;
+ while(cmlFile[i].second[0][0] == '#')
+ cmlFile[i].second[0].erase(0,1);
+ }
+ }
+ else if(cmlFile[i].first == "command" && cmlFile[i].second[0] == "ADD_SUBDIRECTORY")
+ {
+ int pos = 1;
+ while (pos < cmlFile[i].second.size())
+ {
+ if (!isspace(cmlFile[i].second[pos][0]) && cmlFile[i].second[pos][0] != '(' && cmlFile[i].second[pos][0] != '#')
+ {
+ if (library_name == cmlFile[i].second[pos])
+ {
+ found = true;
+ if (!toInclude)
+ {
+ cmlFile[i].first = "comment";
+ cmlFile[i].second[0] = "#" + cmlFile[i].second[0];
+ while (cmlFile[i].second.size() > 1)
+ {
+ cmlFile[i].second[0] += cmlFile[i].second[1];
+ cmlFile[i].second.erase(cmlFile[i].second.begin()+1);
+ }
+
+ }
+ }
+ break;
+ }
+ pos++;
+ }
+ }
+ }
+ if (!found && toInclude)
+ {
+ CDMUtilities::syntaxElement element;
+ element.first = "command";
+ element.second.push_back("ADD_SUBDIRECTORY(" + library_name + ")");
+ cmlFile.push_back(element);
+ }
+
+ return CDMUtilities::writeCMLFile(this->CMakeLists->GetPath().c_str(),cmlFile);
+ }
+ return false;
+}