VCProject* SBTarget::constructVCProject(VSTemplateProject* projTemplate) { // Create the project VCProject* proj = new VCProject(projTemplate); // Set global properties on the project const BuildSettings& projBS = m_parentProject.getBuildSettings(); String sdkDir = projBS.getValue("WINOBJC_SDK_ROOT"); proj->setGlobalProperty("WINOBJC_SDK_ROOT", sdkDir); // Set configuration properties for (auto configBS : m_buildSettings) { VCProjectConfiguration *projConfig = proj->addConfiguration(configBS.first); String execName = configBS.second->getValue("EXECUTABLE_NAME"); if (getProductType() == TargetStaticLib) execName = sb_fname(execName); if (!execName.empty()) projConfig->setProperty("TargetName", execName); } // Write files associated with each build phase SBBuildPhaseList::const_iterator phaseIt = m_buildPhases.begin(); for (; phaseIt != m_buildPhases.end(); ++phaseIt) (*phaseIt)->writeVCProjectFiles(*proj); return proj; }