BuildConfigPtr ProjectSettings::GetBuildConfiguration(const wxString& configName, bool merge) const { wxString confName = configName; if(confName.IsEmpty()) { confName = wxT("Debug"); } std::map<wxString, BuildConfigPtr>::const_iterator iter = m_configs.find(confName); if(iter == m_configs.end()) { return NULL; } BuildConfigPtr buildConf = iter->second; if(!merge) { return buildConf; } // Need to merge configuration and global settings BuildConfigPtr buildConfMerged(buildConf->Clone()); if(buildConfMerged->GetBuildCmpWithGlobalSettings() == BuildConfig::PREPEND_GLOBAL_SETTINGS) { buildConfMerged->SetCompileOptions(buildConf->GetCompileOptions() + wxT(";") + m_globalSettings->GetCompileOptions()); buildConfMerged->SetCCompileOptions(buildConf->GetCCompileOptions() + wxT(";") + m_globalSettings->GetCCompileOptions()); buildConfMerged->SetPreprocessor(buildConf->GetPreprocessor() + wxT(";") + m_globalSettings->GetPreprocessor()); buildConfMerged->SetIncludePath(buildConf->GetIncludePath() + wxT(";") + m_globalSettings->GetIncludePath()); } else if(buildConfMerged->GetBuildCmpWithGlobalSettings() == BuildConfig::APPEND_TO_GLOBAL_SETTINGS) { buildConfMerged->SetCompileOptions(m_globalSettings->GetCompileOptions() + wxT(";") + buildConf->GetCompileOptions()); buildConfMerged->SetCCompileOptions(m_globalSettings->GetCCompileOptions() + wxT(";") + buildConf->GetCCompileOptions()); buildConfMerged->SetPreprocessor(m_globalSettings->GetPreprocessor() + wxT(";") + buildConf->GetPreprocessor()); buildConfMerged->SetIncludePath(m_globalSettings->GetIncludePath() + wxT(";") + buildConf->GetIncludePath()); } if(buildConfMerged->GetBuildLnkWithGlobalSettings() == BuildConfig::PREPEND_GLOBAL_SETTINGS) { buildConfMerged->SetLinkOptions(buildConf->GetLinkOptions() + wxT(";") + m_globalSettings->GetLinkOptions()); buildConfMerged->SetLibraries(buildConf->GetLibraries() + wxT(";") + m_globalSettings->GetLibraries()); buildConfMerged->SetLibPath(buildConf->GetLibPath() + wxT(";") + m_globalSettings->GetLibPath()); } else if(buildConfMerged->GetBuildLnkWithGlobalSettings() == BuildConfig::APPEND_TO_GLOBAL_SETTINGS) { buildConfMerged->SetLinkOptions(m_globalSettings->GetLinkOptions() + wxT(";") + buildConf->GetLinkOptions()); buildConfMerged->SetLibraries(m_globalSettings->GetLibraries() + wxT(";") + buildConf->GetLibraries()); buildConfMerged->SetLibPath(m_globalSettings->GetLibPath() + wxT(";") + buildConf->GetLibPath()); } if(buildConfMerged->GetBuildResWithGlobalSettings() == BuildConfig::PREPEND_GLOBAL_SETTINGS) { buildConfMerged->SetResCmpOptions(buildConf->GetResCompileOptions() + wxT(";") + m_globalSettings->GetResCompileOptions()); buildConfMerged->SetResCmpIncludePath(buildConf->GetResCmpIncludePath() + wxT(";") + m_globalSettings->GetResCmpIncludePath()); } else if(buildConfMerged->GetBuildResWithGlobalSettings() == BuildConfig::APPEND_TO_GLOBAL_SETTINGS) { buildConfMerged->SetResCmpOptions(m_globalSettings->GetResCompileOptions() + wxT(";") + buildConf->GetResCompileOptions()); buildConfMerged->SetResCmpIncludePath(m_globalSettings->GetResCmpIncludePath() + wxT(";") + buildConf->GetResCmpIncludePath()); } return buildConfMerged; }
void PSCompilerPage::Load(BuildConfigPtr buildConf) { m_checkCompilerNeeded->SetValue(!buildConf->IsCompilerRequired()); m_pgPropCppOpts->SetValueFromString(buildConf->GetCompileOptions()); m_pgPropIncludePaths->SetValueFromString( buildConf->GetIncludePath() ); m_pgPropPreProcessors->SetValueFromString( buildConf->GetPreprocessor() ); m_pgPropPreCmpHeaderFile->SetValue( buildConf->GetPrecompiledHeader() ); m_pgPropCOpts->SetValue(buildConf->GetCCompileOptions()); SelectChoiceWithGlobalSettings(m_pgPropBehaviorWithGlobalSettings, buildConf->GetBuildCmpWithGlobalSettings()); m_pgPropIncludePCH->SetValue( buildConf->GetPchInCommandLine() ); m_pgPropPCHCompileLine->SetValue( buildConf->GetPchCompileFlags() ); m_pgPropAssembler->SetValue(buildConf->GetAssmeblerOptions()); }