(
this!= &projects) {
103 tree->m_RootSrc = root_src;
112 const string& fc_path = p->first;
115 stringsource_base_dir;
128 const string& proj_name = *
n;
129 if(proj_name[0] ==
'#') {
132 if(proj_name[0] ==
'@'&&
133proj_name[proj_name.size() - 1] ==
'@') {
138 stringapplib_mfilepath =
140proj_name,
info.m_Type);
141 if( applib_mfilepath.empty() )
248 copy(depends_set.
begin(), depends_set.
end(), back_inserter(*depends));
255external_depends->clear();
257list<CProjKey> depends;
259 ITERATE(list<CProjKey>, p, depends) {
262external_depends->push_back(depend_id);
274 if(*
n== p->first) {
279d->second.m_MakeType =
min(d->second.m_MakeType, p->second.m_MakeType);
291 if(*
n== p->first) {
297 boolmodified =
false;
301p->second.m_External =
false;
318list<CDataToolGeneratedSrc>::iterator s;
326list<CDataToolGeneratedSrc>::const_iterator
n;
333list<CDataToolGeneratedSrc>::iterator
prev= s;
360 const CProjKey& proj_id = p->first;
379 if(projkeys.
find(proj_id) != projkeys.
end()) {
380chain.push_back(proj_id);
386 if(!
GetApp().GetSite().IsLibWithChoice(proj_id.
Id()) ||
388 stringstr_chain(
"Dependency chain: ");
390str_chain +=
n->Id();
393str_chain += proj_id.
Id();
400TDependsChain::const_iterator
i= project.
m_Depends.begin();
404chain.push_back(proj_id);
405projkeys.
insert(proj_id);
407 for( ; !found &&
i!= project.
m_Depends.end(); ++
i) {
408 if(*
i== proj_id) {
416projkeys.
erase(proj_id);
428 const CProjKey& project_id = p->first;
444 if(find(cycle.begin(), cycle.end(), proj_id) != cycle.end())
474one_chain.push_back(depend_id);
475chains.push_back(one_chain);
481 if( cycles_found ) {
483cycles->
insert(cycle_found);
493 for(TDependsChains::iterator p = chains->begin();
494p != chains->end(); ) {
498 const CProjKey& depend_id = one_chain.back();
503p = chains->
erase(p);
506 const CProjItem& depend_project =
n->second;
507 if( depend_project.
m_Depends.empty() ) {
509p = chains->erase(p);
514p = chains->erase(p);
517 const CProjKey& new_depend_id = *k;
520new_chain.push_back(new_depend_id);
521p = chains->insert(p, new_chain);
527 if( chains->empty() )
530 if(
IsCyclic(proj_id, *chains, cycle_found) )
545 if(find(one_chain.begin(),
547proj_id) != one_chain.end()) {
548*cycle_found = one_chain;
558 size_torig_size = one_chain.size();
563 if(one_chain.size() != orig_size) {
564*cycle_found = original_chain;
576:m_RootParent(
"/",
NULL)
580 const CProjKey& project_id = p->first;
588folder->
m_Name= path.back();
596 const string& folder_name)
613 const string& node = *p;
618folder_i = *(
n->second);
629 const string& node = *p;
634folder_i =
n->second;
642 const string& project_base_dir,
671 if(&other !=
this) {
710 if(!
out.is_open()) {
719 out<<
"set("<< *s <<
")"<< endl;
722 out<<
"include( "<< *s <<
")"<< endl;
725 out<<
"include( CMakeLists."<< *s <<
".txt)"<< endl;
728 out<<
"add_subdirectory("<< *s <<
")"<< endl;
754 out<<
" "<< *s << endl;
782 if(&other !=
this) {
807 if(folder.empty()) {
847 stringtarget_output_name(prj_id);
852 if(prj_id ==
"general") {
853target_output_name = prj_id =
"general-lib";
861 if(!
out.is_open()) {
865 for(vector<string>::const_iterator s =
m_Definitions.begin();
867 out<<
"set("<< *s <<
")"<< endl;
872 out<<
"add_library( "<< prj_id <<
" STATIC"<< endl;
874 out<<
"add_library( "<< prj_id <<
" SHARED"<< endl;
876 out<<
"add_executable( "<< prj_id << endl;
878cerr <<
"unsupported project type: "<< prj_name << endl;
884 out<<
" "<< *s << endl;
899 if(!s->second.empty()) {
900 out<<
"set_source_files_properties("<< endl;
902 out<<
" "<< *
n<< endl;
904 out<<
" PROPERTIES LOCATION "<< s->first <<
")"<< endl;
910 if(prj_name != prj_id) {
911 out<<
"set_target_properties("<< prj_name << endl <<
912 " PROPERTIES OUTPUT_NAME "<< prj_id <<
")"<< endl;
918 out<<
"include_directories( "<< endl;
920 out<<
" "<< *s << endl;
925 out<<
"set_target_properties( "<< prj_id <<
" PROPERTIES"<< endl;
926 if(target_output_name != prj_id) {
927 out<<
" "<<
"OUTPUT_NAME "<< target_output_name << endl;
943 out<<
"add_dependencies( "<< prj_id << endl;
945 if(*s ==
"general") {
946 out<<
" "<<
"general-lib"<< endl;
948 out<<
" "<< *s << endl;
958 out<<
"target_link_libraries( "<< prj_id << endl;
960 if(*s ==
"general") {
961 out<<
" "<<
"general-lib"<< endl;
963 out<<
" "<< *s << endl;
968 stringcustname(
"${NCBI_PROJECT_SRC_DIR}/CMakeLists."+ prj_name +
".cmake");
969 out<<
"if(EXISTS "<< custname <<
")"<< endl;
970 out<<
" include( "<< custname <<
")"<< endl;
971 out<<
"endif(EXISTS "<< custname <<
")"<< endl;
978 const stringkeyword(
"USES_LIBRARIES = ");
982 const CProjKey& prj_key = p->first;
991 if(!deps->second.
empty()) {
993cout <<
"Modify "<< prj.
m_MkName<< endl;
996 boolmodified =
false;
1001 if(ofs.is_open()) {
1003 boolfound =
false;
1014ofs << strline << endl;
1029 if(ofs.is_open()) {
1037cout <<
"WARNING: library not found: "<< *s << endl;
1042ofs <<
" \\"<< endl <<
" ";
1046 len+= s->size() + 1;
1049cout <<
"USES_LIBRARIES ="<< libdep << endl;
1056cout <<
"Count files to modify: "<<
count<< endl;
static void FindCyclesNew(const TProjects &tree, TDependsCycles *cycles)
static void AnalyzeProjItem(const CProjKey &proj_id, const TProjects &tree, TDependsCycles *cycles)
static void FindCycles(const TProjects &tree, TDependsCycles *cycles)
static bool IsCyclic(const CProjKey &proj_id, const TDependsChains &chains, TDependsChain *cycle_found)
static bool IsInAnyCycle(const CProjKey &proj_id, const TDependsCycles &cycles)
static bool ExtendChains(const CProjKey &proj_id, const TProjects &tree, TDependsChains *chains, TDependsChain *cycle_found)
list< CProjKey > TDependsChain
list< TDependsChain > TDependsChains
static bool AnalyzeProjItemNew(const TProjects &tree, const CProjKey &proj_id, set< CProjKey > &projkeys, TDependsChain &chain)
vector< string > m_NodeDefinitions
set< string > m_NodeProjects
CMakeNode & operator=(const CMakeNode &other)
void AddHeader(const string &name)
vector< string > m_NodeIncludes
void AddDefinition(const string &key, const string &value)
set< string > m_NodeSubdirs
void AddProject(const string &prj)
void Write(const string &dirname) const
void AddInclude(const string &name)
vector< string > m_NodeHeaders
void AddSubdir(const string &dir)
vector< string > m_IncludeDir
void AddSourceFile(const string &folder, const string &name)
void Write(const string &dirname) const
void AddProperty(const CMakeProperty &prop)
void SetProjKey(const CProjKey &prj_key)
CMakeProject & operator=(const CMakeProject &other)
vector< string > m_CompDefines
void AddCompilationDefine(const string &value)
vector< CMakeProperty > m_Properties
void AddDependency(const string &name)
void AddCompilationFlag(const string &value)
void AddDefinition(const string &key, const string &value)
vector< string > m_Definitions
map< string, set< string > > m_Sources
void AddIncludeDirectory(const string &name)
vector< string > m_CompFlags
vector< string > m_Dependencies
void AddLibrary(const string &name)
vector< string > m_Libraries
CMakeProperty operator=(const CMakeProperty &other)
vector< string > m_Propvalue
void Write(CNcbiOstream &out) const
CMakeProperty(const string &name)
CMakeProperty & AddValue(const string &value)
static void PatchTreeMakefiles(const CProjectItemsTree &prj_tree)
string GetDataspecProjId(void) const
string GetUtilityProjectsSrcDir(void)
map< string, set< string > > m_GraphDepPrecedes
list< CProjKey > m_Depends
What projects this project is depend upon (IDs).
list< CDataToolGeneratedSrc > m_DatatoolSources
Source files *.asn , *.dtd to be processed by datatool app.
TProjType m_ProjType
Type of the project.
list< string > m_HostedLibs
string m_SourcesBaseDir
Base directory of source files (....c++/src/a/ )
const string & Id(void) const
TProjType Type(void) const
void GetInternalDepends(list< CProjKey > *depends) const
Collect all depends for all project items.
void VerifyDataspecProj(void)
void SetFrom(const CProjectItemsTree &projects)
static void CreateFrom(const string &root_src, const TFiles &makein, const TFiles &makelib, const TFiles &makedll, const TFiles &makeapp, const TFiles &makemsvc, CProjectItemsTree *tree)
CProjectItemsTree & operator=(const CProjectItemsTree &projects)
void GetExternalDepends(list< CProjKey > *externalDepends) const
Get depends that are not inside this project tree.
string m_RootSrc
Root directory of Project Tree.
void VerifyExternalDepends(void)
SProjectTreeFolder m_RootParent
SProjectTreeFolder * CreateFolder(SProjectTreeFolder *parent, const string &folder_name)
list< SProjectTreeFolder > m_Folders
CProjectTreeFolders(void)
SProjectTreeFolder * FindOrCreateFolder(const TPath &path)
SProjectTreeFolder * FindFolder(const TPath &path)
static void CreatePath(const string &root_src_dir, const string &project_base_dir, TPath *path)
CSimpleMakeFileContents â.
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator begin() const
const_iterator end() const
iterator_bool insert(const value_type &val)
container_type::value_type value_type
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator begin() const
const_iterator find(const key_type &key) const
const_iterator end() const
pre_order_iterator end() const
std::ofstream out("events_result.xml")
main entry point for tests
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
static const CNcbiError & GetLast(void)
Get the error that was last set (in the current thread)
bool CreatePath(TCreateFlags flags=fCreate_Default) const
Create the directory path recursively possibly more than one at a time.
virtual bool Remove(TRemoveFlags flags=eRecursive) const
Remove a directory entry.
static string CreateRelativePath(const string &path_from, const string &path_to)
Create a relative path between two points in the file system specified by their absolute paths.
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
static string GetTmpName(ETmpFileCreationMode mode=eTmpFileGetName)
Get temporary file name.
static string ConcatPath(const string &first, const string &second)
Concatenate two parts of the path for the current OS.
static void SplitPath(const string &path, string *dir=0, string *base=0, string *ext=0)
Split a path string into its basic components.
@ fCF_Overwrite
The following flags define what to do when the destination entry already exists:
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CNcbiIstream & NcbiGetlineEOL(CNcbiIstream &is, string &str, string::size_type *count=NULL)
Read from "is" to "str" the next line (taking into account platform specifics of End-of-Line)
IO_PREFIX::ofstream CNcbiOfstream
Portable alias for ofstream.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
static string Join(const TContainer &arr, const CTempString &delim)
Join strings using the specified delimiter.
@ fSplit_MergeDelimiters
Merge adjacent delimiters.
void AnalyzeDllData(CProjectItemsTree &tree)
string CreateProjectName(const CProjKey &project_id)
Project naming schema.
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
std::istream & in(std::istream &in_, double &x_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
CProjBulderApp & GetApp(void)
access to App singleton
#define PTB_WARNING_EX(file, err_code, msg)
static CProjKey DoCreate(const string &source_base_dir, const string &proj_name, const string &applib_mfilepath, const TFiles &makeapp, CProjectItemsTree *tree, EMakeFileType maketype)
static CProjKey DoCreate(const string &source_base_dir, const string &proj_name, const string &applib_mfilepath, const TFiles &makeapp, const TFiles &makelib, CProjectItemsTree *tree, const SMakeProjectT::SMakeInInfo &makeinfo)
static TAsnType GetAsnProjectType(const string &applib_mfilepath, const TFiles &makeapp, const TFiles &makelib)
static CProjKey DoCreate(const string &source_base_dir, const string &proj_name, const string &applib_mfilepath, const TFiles &makeapp, CProjectItemsTree *tree, EMakeFileType maketype)
static CProjKey DoCreateDataSpec(const string &source_base_dir, const string &proj_name, const string &proj_id, CProjectItemsTree *tree, EMakeFileType maketype)
static CProjKey DoCreate(const string &source_base_dir, const string &proj_name, const string &applib_mfilepath, const TFiles &makeapp, CProjectItemsTree *tree, EMakeFileType maketype)
static bool IsConfigurableDefine(const string &define)
static string CreateMakeAppLibFileName(const string &base_dir, const string &projname, SMakeInInfo::TMakeinType type=SMakeInInfo::eUnknown)
list< SMakeInInfo > TMakeInInfoList
static void AnalyzeMakeIn(const CSimpleMakeFileContents &makein_contents, TMakeInInfoList *info)
static CProjKey DoCreate(const string &source_base_dir, const string &proj_name, const string &applib_mfilepath, const TFiles &makemsvc, CProjectItemsTree *tree, EMakeFileType maketype)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4