X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcreaDevManagerLib%2FmodelCDMLib.cpp;h=69bfcff7d3f92a023c8c8590bdf341b39ecf7ccc;hb=9f11db34cb1acacf545f819d6b552a95835d93bd;hp=e3c29023fffc04797962496f86d7f948d1fb2a00;hpb=af76296378f6fc398f0f6f516506d19019ff8287;p=crea.git diff --git a/lib/creaDevManagerLib/modelCDMLib.cpp b/lib/creaDevManagerLib/modelCDMLib.cpp index e3c2902..69bfcff 100644 --- a/lib/creaDevManagerLib/modelCDMLib.cpp +++ b/lib/creaDevManagerLib/modelCDMLib.cpp @@ -177,6 +177,15 @@ modelCDMLibrary* modelCDMLib::CreateLibrary( return NULL; } + //add library to lib CMakeLists + std::fstream out1((this->path + CDMUtilities::SLASH + "CMakeLists.txt").c_str(), std::fstream::in | std::fstream::out | std::fstream::app); + if (out1.is_open()) + { + out1 << "ADD_SUBDIRECTORY(" << name << ")" << std::endl; + out1.close(); + } + + //add library to model modelCDMLibrary* library = new modelCDMLibrary(this, this->path + CDMUtilities::SLASH + name, name, this->level + 1); this->libraries.push_back(library); @@ -398,3 +407,118 @@ void modelCDMLib::CheckStructure(std::map& properties) this->libraries[i]->CheckStructure(properties); } } + +bool modelCDMLib::IsLibraryIncluded(const std::string& library_name) +{ + if(this->HasCMakeLists()) + { + std::ifstream CMFile(this->CMakeLists->GetPath().c_str()); + if (CMFile.is_open()) + { + std::string line; + while(!CMFile.eof()) + { + std::getline(CMFile, line); + while(line[0]==' ') + line.erase(0); + if(line[0] != '#') + { + std::vector lineSeg; + CDMUtilities::splitter::split(lineSeg,line,"()",CDMUtilities::splitter::no_empties); + if(lineSeg.size() > 0 && lineSeg[0] == "ADD_SUBDIRECTORY" && lineSeg[1] == library_name) + { + CMFile.close(); + return true; + } + } + } + CMFile.close(); + } + } + return false; +} + +bool modelCDMLib::SetLibraryInclude(const std::string& library_name, const bool& toInclude) +{ + if (this->HasCMakeLists()) + { + std::ifstream CMFile(this->CMakeLists->GetPath().c_str()); + if (CMFile.is_open()) + { + std::stringstream outs; + std::string line; + bool found = false; + while(!CMFile.eof()) + { + std::getline(CMFile, line); + if(line != "") + { + std::vector segs; + CDMUtilities::splitter::split(segs, line, " ", CDMUtilities::splitter::no_empties); + //is comment + if(segs.size() > 0 && segs[0][0] == '#') + { + if(toInclude) + { + CDMUtilities::splitter::split(segs, line, " #()", CDMUtilities::splitter::no_empties); + if (segs.size() > 1 && segs[0] == "ADD_SUBDIRECTORY" && segs[1] == library_name) + { + found = true; + outs << "ADD_SUBDIRECTORY(" << library_name << ")\n"; + } + else + outs << line << "\n"; + } + else + { + outs << line << "\n"; + } + } + //is not comment + else + { + if (segs.size() > 0 && !toInclude) + { + CDMUtilities::splitter::split(segs, line, " ()", CDMUtilities::splitter::no_empties); + if (segs.size() > 1 && segs[0] == "ADD_SUBDIRECTORY" && segs[1] == library_name) + { + outs << "#" << line << "\n"; + } + else + { + outs << line << "\n"; + } + } + else + { + CDMUtilities::splitter::split(segs, line, " ()", CDMUtilities::splitter::no_empties); + if (segs.size() > 1 && segs[0] == "ADD_SUBDIRECTORY" && segs[1] == library_name) + { + found = true; + } + outs << line << "\n"; + } + } + } + else + { + outs << "\n"; + } + } + + CMFile.close(); + + if(!found && toInclude) + outs << "ADD_SUBDIRECTORY(" << library_name << ")\n"; + + std::ofstream CMFileOut(this->CMakeLists->GetPath().c_str()); + if (CMFileOut.is_open()) + { + CMFileOut << outs.rdbuf(); + CMFileOut.close(); + return true; + } + } + } + return false; +}