void Tool::ScriptResolver:: resolve( Tool::Context *toolContext, pbxsetting::Environment const &environment, pbxproj::PBX::LegacyTarget::shared_ptr const &legacyTarget) const { std::string logMessage = "ExternalBuildToolExecution " + legacyTarget->name(); std::string script = environment.expand(legacyTarget->buildArgumentsString()); std::unordered_map<std::string, std::string> environmentVariables; if (legacyTarget->passBuildSettingsInEnvironment()) { environmentVariables = environment.computeValues(pbxsetting::Condition::Empty()); } std::string fullWorkingDirectory = FSUtil::ResolveRelativePath(legacyTarget->buildWorkingDirectory(), toolContext->workingDirectory()); Tool::Invocation invocation; invocation.executable() = Tool::Invocation::Executable::Determine(legacyTarget->buildToolPath(), toolContext->executablePaths()); invocation.arguments() = pbxsetting::Type::ParseList(script); invocation.environment() = environmentVariables; invocation.workingDirectory() = fullWorkingDirectory; invocation.logMessage() = logMessage; toolContext->invocations().push_back(invocation); }