+ ReplaceExtension ( module.GetPath(), "_" + _get_vc_dir() + "_auto.vcproj" )\r
+ );\r
+}\r
+\r
+std::string MSVCBackend::_get_vc_dir ( void ) const\r
+{\r
+ if ( configuration.VSProjectVersion == "6.00" )\r
+ return "vc6";\r
+ else if ( configuration.VSProjectVersion == "7.00" )\r
+ return "vc70";\r
+ else if ( configuration.VSProjectVersion == "7.10" )\r
+ return "vc71";\r
+ else /* must be VS2005 */\r
+ return "vc8";\r
+\r
+\r
+}\r
+\r
+void \r
+MSVCBackend::_get_object_files ( const Module& module, vector<string>& out) const\r
+{\r
+ string basepath = module.GetBasePath ();\r
+ string vcdir = _get_vc_dir ();\r
+ size_t i;\r
+ string intenv = Environment::GetIntermediatePath () + "\\" + basepath + "\\" + vcdir + "\\";\r
+ string outenv = Environment::GetOutputPath () + "\\" + basepath + "\\" + vcdir + "\\";\r
+ string dbg = vcdir.substr ( 0, 3 );\r
+\r
+ vector<string> cfgs;\r
+ cfgs.push_back ( intenv + "Debug" );\r
+ cfgs.push_back ( intenv + "Release" );\r
+ cfgs.push_back ( intenv + "Speed" );\r
+ cfgs.push_back ( outenv + "Debug" );\r
+ cfgs.push_back ( outenv + "Release" );\r
+ cfgs.push_back ( outenv + "Speed" );\r
+\r
+\r
+ vector<const IfableData*> ifs_list;\r
+ ifs_list.push_back ( &module.project.non_if_data );\r
+ ifs_list.push_back ( &module.non_if_data );\r
+ while ( ifs_list.size () )\r
+ {\r
+ const IfableData& data = *ifs_list.back();\r
+ ifs_list.pop_back();\r
+ const vector<File*>& files = data.files;\r
+ for ( i = 0; i < files.size (); i++ )\r
+ {\r
+ string file = files[i]->name;\r
+ string::size_type pos = file.find_last_of ("\\");\r
+ if ( pos != string::npos )\r
+ file.erase ( 0, pos+1 );\r
+ if ( !stricmp ( Right(file,3).c_str(), ".rc" ) )\r
+ file = ReplaceExtension ( file, ".res" );\r
+ else\r
+ file = ReplaceExtension ( file, ".obj" );\r
+ for ( size_t j = 0; j < cfgs.size () / 2; j++ )\r
+ out.push_back ( cfgs[j] + "\\" + file );\r
+ }\r
+\r
+ }\r
+ //common files in intermediate dir\r
+ for ( i = 0; i < cfgs.size () / 2; i++)\r
+ {\r
+ out.push_back ( cfgs[i] + "\\" + "BuildLog.htm" );\r
+ out.push_back ( cfgs[i] + "\\" + dbg + "0.pdb" );\r
+ out.push_back ( cfgs[i] + "\\" + dbg + "0.idb" );\r
+ out.push_back ( cfgs[i] + "\\" + module.name + ".pch" );\r
+ }\r
+ //files in the output dir\r
+ for ( i = cfgs.size () / 2; i < cfgs.size (); i++ )\r
+ {\r
+ out.push_back ( cfgs[i] + "\\" + module.GetTargetName () );\r
+ out.push_back ( cfgs[i] + "\\" + module.name + ".pdb" );\r
+ out.push_back ( cfgs[i] + "\\" + module.name + ".lib" );\r
+ out.push_back ( cfgs[i] + "\\" + module.name + ".exp" );\r
+ out.push_back ( cfgs[i] + "\\" + module.name + ".ilk" );\r
+ out.push_back ( cfgs[i] + "\\" + "(InputName).obj" ); //MSVC2003 build bug \r
+ }\r