(
CFile(file_path).Exists()) {
64 const string&
value,
const string& section,
const string& opt)
66 if(
value.empty() ||
71 stringname(section+
"_"+opt+
"_"+
value);
73 "Translate", name,
value);
78 if(
value.empty() ||
85 string data(
value), raw_macro, macro, definition;
86string::size_type start, end,
done= 0;
88 if((start =
data.find(
"$(",
done)) == string::npos) {
91end =
data.find(
")", start);
92 if(end == string::npos) {
95raw_macro =
data.substr(start,end-start+1);
98definition = meta.
m_MakeFile.
Get(
"Translate",
string(
"Macro_") + macro);
99 if(definition.empty()) {
114 stringsec(
"Configuration");
121 stringsec(
"Compiler");
129 stringsec(
"Linker");
137 stringsec(
"Librarian");
145 stringsec(
"ResourceCompiler");
163(
const string& project_id,
164 const string& source_file_full_path,
165 const string& tree_src_dir)
const 175 stringsource_file_dir;
179 size_tmax_match = 0;
183 const string& branch_subdir = p->first;
184 stringabs_branch_subdir =
188 if(
IsSubdir(abs_branch_subdir, source_file_dir) ) {
189 if( branch_subdir.length() > max_match ) {
190max_match = branch_subdir.length();
191pch_file = p->second;
216 stringirrelevant[] = {
"UsePch",
"PchUsageDefine",
"DefaultPch",
"DoNotUsePch",
""};
218list<string> projects_with_pch_dirs;
220 ITERATE(list<string>, p, projects_with_pch_dirs) {
221 const string&
key= *p;
223 for(
int i=0;
ok&& !irrelevant[
i].empty(); ++
i) {
224 ok=
key!= irrelevant[
i];
247 stringname(
"Makefile.");
249name += project_name +
'.';
264name +=
"msvcproj.";
268name +=
"dataspec.";
312string::size_type start, end;
313 if((start =
value.find(
"$(")) != string::npos &&
314(end =
value.find(
")")) != string::npos && (end > start)) {
315 stringraw_define =
value.substr(start+2,end-start-2);
317 if(!new_val.empty()) {
318redef.push_back(
"$("+ new_val +
")");
323 stringraw_define =
value.substr(1,
value.length()-2);
325 if(!new_val.empty()) {
326redef.push_back(
"@"+ new_val +
"@");
332 if(!new_val.empty()) {
347redef.insert(redef.end(),
value.begin(),
value.end());
352redef.insert(redef.end(),newval.begin(), newval.end());
365values.push_back(def);
369values.insert(values.end(), redef.begin(), redef.end());
371values.push_back(def);
379values.insert(values.end(), def.begin(), def.end());
381 ITERATE(list<string>, k, def) {
394 return val!=
"FALSE";
399list<string>* files)
const 401 stringfiles_string =
409list<string>* lib_ids)
const 419list<string>* files)
const 421 stringfiles_string =
423 "ExcludedFromProject",
"SourceFiles",
config);
430list<string>* lib_ids)
const 434 "ExcludedFromProject",
"LIB",
config);
441list<string>* dirs)
const 450list<string>* files)
const 456list<string>* files)
const 473files->push_back(
"*.h");
474files->push_back(
"*.hpp");
479list<string>* files)
const 482files->push_back(
"*.inl");
486list<string>* files)
const 489files->push_back(
"*.inl");
497 stringsource_files_str =
499 if(source_files_str.empty()) {
503list<string> source_files;
506 ITERATE(list<string>, p, source_files){
507 const string& source_file = *p;
510 stringsource_file_path_abs =
526 info->push_back(build_info);
541list<string>* files)
const 543 stringfiles_string =
551 stringprefix(
"ExtraFileGroup.");
552list<string> sections;
554 ITERATE(list<string>, s, sections) {
557 stringgroup_name =
NStr::Replace(s->substr(prefix.size()),
"_",
" ");
559list<string> raw_files, files;
562 boolstarted =
false;
563 ITERATE(list<string>,
f, raw_files) {
565 if(part[0] ==
'\"'&& !started) {
566fname = part.substr(1);
570 else if(part[part.size()-1] ==
'\"') {
572fname += part.substr(0,part.size()-1);
582files.push_back(fname);
586 if(!group_name.empty() && !files.empty()) {
587(*files_map)[group_name] = files;
602 stringpriority_string =
605 if( priority_string.empty() )
616 stringname =
"Makefile."+ reqs;
617 switch(project_type) {
636 const string& rules_basedir,
637 constlist<string> requires_list)
638:m_ProjectMakefile(project_makefile)
640 ITERATE(list<string>, p, requires_list) {
641 const string& reqs = *p;
642 stringrule_path = rules_basedir;
649 if( !rule->IsEmpty() )
659 #define IMPLEMENT_COMBINED_MAKEFILE_OPT(X) \ 660 string CMsvcCombinedProjectMakefile::X(const string& opt, \ 661 const SConfigInfo& config) const \ 663 string prj_val = m_ProjectMakefile->X(opt, config); \ 664 if ( !prj_val.empty() ) \ 668 ITERATE(TRules, p, m_Rules) { \ 669 const TRule& rule = *p; \ 670 string rule_val = rule->X(opt, config); \ 671 if ( !rule_val.empty() && priority < rule->GetRulePriority(config)) { \ 673 priority = rule->GetRulePriority(config); \ 693 constlist<string>& rules_paths_list,
694 const string& project_base_dir,
695list<string>* project_paths_list)
697project_paths_list->clear();
698 ITERATE(list<string>, p, rules_paths_list) {
699 const string& rules_path = *p;
700 stringrules_abs_path =
702 stringproject_path =
704project_paths_list->push_back(project_path);
709 #define IMPLEMENT_COMBINED_MAKEFILE_VALUES(X) \ 710 void CMsvcCombinedProjectMakefile::X(const SConfigInfo& config, \ 711 list<string>* values_list) const \ 713 list<string> prj_val; \ 714 m_ProjectMakefile->X(config, &prj_val); \ 715 if ( !prj_val.empty() ) { \ 716 *values_list = prj_val; \ 721 ITERATE(TRules, p, m_Rules) { \ 722 const TRule& rule = *p; \ 723 list<string> rule_val; \ 724 rule->X(config, &rule_val); \ 725 if ( !rule_val.empty() && priority < rule->GetRulePriority(config)) { \ 727 priority = rule->GetRulePriority(config); \ 730 *values_list = val; \ 734 #define IMPLEMENT_COMBINED_MAKEFILE_FILESLIST(X) \ 735 void CMsvcCombinedProjectMakefile::X(const SConfigInfo& config, \ 736 list<string>* values_list) const \ 738 list<string> prj_val; \ 739 m_ProjectMakefile->X(config, &prj_val); \ 740 if ( !prj_val.empty() ) { \ 741 *values_list = prj_val; \ 746 string rule_base_dir; \ 747 ITERATE(TRules, p, m_Rules) { \ 748 const TRule& rule = *p; \ 749 list<string> rule_val; \ 750 rule->X(config, &rule_val); \ 751 if ( !rule_val.empty() && priority < rule->GetRulePriority(config)) { \ 753 priority = rule->GetRulePriority(config); \ 754 rule_base_dir = rule->m_ProjectBaseDir; \ 757 s_ConvertRelativePaths(rule_base_dir, \ 759 m_ProjectMakefile->m_ProjectBaseDir, \ 781(list<SCustomBuildInfo>*
info)
const 800 if(
val.empty() ) {
static EMsvcPlatform GetMsvcPlatform(void)
static EMsvcVersion GetMsvcVersion(void)
Combining of rules and project makefile.
virtual void GetCustomBuildInfo(list< SCustomBuildInfo > *info) const
TProjectMakefile m_ProjectMakefile
CMsvcCombinedProjectMakefile(void)
virtual bool IsExcludeProject(bool default_val) const
virtual void GetExtraFiles(map< string, list< string > > *files) const
void GetCustomScriptInfo(SCustomScriptInfo &info, const string §ion) const
virtual ~CMsvcCombinedProjectMakefile(void)
CMsvcProjectMakefile â.
CMsvcProjectMakefile(void)
virtual void GetHeadersInInclude(const SConfigInfo &config, list< string > *files) const
virtual bool IsExcludeProject(bool default_val) const
virtual void GetResourceFiles(const SConfigInfo &config, list< string > *files) const
bool Redefine(const string &value, list< string > &redef) const
void x_GetHeaders(const SConfigInfo &config, const string &entry, list< string > *files) const
virtual void GetAdditionalIncludeDirs(const SConfigInfo &config, list< string > *files) const
virtual void GetCustomBuildInfo(list< SCustomBuildInfo > *info) const
virtual void GetInlinesInInclude(const SConfigInfo &config, list< string > *files) const
string GetGUID(void) const
virtual void GetHeadersInSrc(const SConfigInfo &config, list< string > *files) const
virtual void GetInlinesInSrc(const SConfigInfo &config, list< string > *files) const
void Append(list< string > &values, const string &def) const
virtual void GetAdditionalLIB(const SConfigInfo &config, list< string > *lib_ids) const
virtual void GetAdditionalSourceFiles(const SConfigInfo &config, list< string > *files) const
void GetCustomScriptInfo(SCustomScriptInfo &info, const string §ion) const
virtual void GetExtraFiles(map< string, list< string > > *files) const
virtual void GetExcludedLIB(const SConfigInfo &config, list< string > *lib_ids) const
virtual void GetExcludedSourceFiles(const SConfigInfo &config, list< string > *files) const
Abstraction of rule for generation of project settings based on component usage.
int GetRulePriority(const SConfigInfo &config) const
CMsvcProjectRuleMakefile(void)
string ProcessMacros(string data, bool preserve_unresolved=true) const
CProjBulderAppException â.
const CMsvcMetaMakefile & GetMetaMakefile(void)
const CMsvc7RegSettings & GetRegSettings(void)
const CMsvcSite & GetSite(void)
TProjType m_ProjType
Type of the project.
string m_Name
Name of atomic project.
void EnumerateSections(list< string > *sections) const
void EnumerateEntries(const string §ion, list< string > *entries) const
void Read(CNcbiIstream &is)
string Get(const string §ion, const string &name) const
string GetString(const string §ion, const string &name, const string &default_value=kEmptyStr) const
static string StripDefine(const string &define)
static bool IsDefine(const string ¶m)
The NCBI C++ standard methods for dealing with std::string.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
static string NormalizePath(const string &path, EFollowLinks follow_links=eIgnoreLinks)
Normalize a path.
static string AddTrailingPathSeparator(const string &path)
Add trailing path separator, if needed.
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 string ConvertToOSPath(const string &path)
Convert "path" on any OS to the current OS-dependent path.
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
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.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
static bool StringToBool(const CTempString str)
Convert string to bool.
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
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 string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static string & Replace(const string &src, const string &search, const string &replace, string &dst, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
@ fSplit_MergeDelimiters
Merge adjacent delimiters.
string GetLibrarianOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Librarian.
#define IMPLEMENT_COMBINED_MAKEFILE_FILESLIST(X)
string GetResourceCompilerOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
ResourceCompiler.
#define IMPLEMENT_COMBINED_MAKEFILE_VALUES(X)
static string s_CreateRuleMakefileFilename(CProjItem::TProjType project_type, const string &reqs)
string GetConfigurationOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Get option with taking into account 2 makefiles : matafile and project_file.
#define IMPLEMENT_COMBINED_MAKEFILE_OPT(X)
string GetCompilerOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Compiler.
string GetLinkerOpt(const IMsvcMetaMakefile &meta_file, const IMsvcMetaMakefile &project_file, const string &opt, const SConfigInfo &config)
Linker.
static void s_ConvertRelativePaths(const string &rule_base_dir, const list< string > &rules_paths_list, const string &project_base_dir, list< string > *project_paths_list)
string CreateMsvcProjectMakefileName(const string &project_name, CProjItem::TProjType type)
Create project makefile name.
#define LIST_SEPARATOR
Separator for list values in registry.
string GetOpt(const CPtbRegistry ®istry, const string §ion, const string &opt, const string &config)
bool IsSubdir(const string &abs_parent_dir, const string &abs_dir)
Is abs_dir a parent of abs_parent_dir.
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
std::istream & in(std::istream &in_, double &x_)
CProjBulderApp & GetApp(void)
access to App singleton
string m_AdditionalDependencies
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