public Process StartBuild(CMakeEnv cmakeEnv, string pathToBuild, CMakeBuildConfig config = null, ModifyStartInfo modifyStartInfo = null) { var startInfo = new ProcessStartInfo() { FileName = cmakeEnv.CMakeBin, Arguments = $"--build \"{Path.GetFullPath(pathToBuild)}\"" }; if (config?.Target != null) { var targetArg = string.Join(" ", config.Target.Select(x => $"\"{x}\"")); startInfo.Arguments += $" --target {targetArg}"; } if (config?.Config != null) { startInfo.Arguments += $" --config {config.Config}"; } if (config != null && config.CleanFirst) { startInfo.Arguments += $" --clean-first"; } ApplyKitEnv(startInfo.EnvironmentVariables); modifyStartInfo?.Invoke(startInfo); return(Process.Start(startInfo)); }
public Process StartConfigure(CMakeEnv cmakeEnv, string pathToSource, string pathToBuild, CMakeConfigureConfig config = null, ModifyStartInfo modifyStartInfo = null) { var settings = new Dictionary <string, CMakeSetting>(); if (kitInfo.PreferredGenerator != null) { if (kitInfo.PreferredGenerator.Name != null) { settings["CMAKE_GENERATOR"] = new CMakeSetting(kitInfo.PreferredGenerator.Name); } if (kitInfo.PreferredGenerator.Toolset != null) { settings["CMAKE_GENERATOR_TOOLSET"] = new CMakeSetting(kitInfo.PreferredGenerator.Toolset); } if (kitInfo.PreferredGenerator.Platform != null) { settings["CMAKE_GENERATOR_PLATFORM"] = new CMakeSetting(kitInfo.PreferredGenerator.Platform); } } if (kitInfo.Compilers != null) { foreach (var compiler in kitInfo.Compilers) { settings[$"CMAKE_{compiler.Key}_COMPILER"] = new CMakeSetting(compiler.Value, "FILEPATH"); } } if (!string.IsNullOrEmpty(kitInfo.ToolchainFile)) { settings["CMAKE_TOOLCHAIN_FILE"] = new CMakeSetting(kitInfo.ToolchainFile, "FILEPATH"); } if (config?.UserSettings != null) { foreach (var userSetting in config.UserSettings) { settings[userSetting.Key] = userSetting.Value; } } var settingsArgs = string.Join(" ", settings.Select(x => x.Value.Type == null ? $"\"-D{x.Key}={x.Value.Value}\"" : $"\"-D{x.Key}:{x.Value.Type}={x.Value.Value}\"")); var arguments = $"-S \"{Path.GetFullPath(pathToSource)}\" -B \"{Path.GetFullPath(pathToBuild)}\""; if (!string.IsNullOrEmpty(settingsArgs)) { arguments += " " + settingsArgs; } if (config == null || config.NoWarnUnusedCli) { arguments += " --no-warn-unused-cli"; } var startInfo = new ProcessStartInfo() { FileName = cmakeEnv.CMakeBin, Arguments = arguments }; ApplyKitEnv(startInfo.EnvironmentVariables); modifyStartInfo?.Invoke(startInfo); return(Process.Start(startInfo)); }
public Process StartConfigure(CMakeEnv cmakeEnv, string pathToSource, string pathToBuild, Dictionary <string, CMakeSetting> userSettings, ModifyStartInfo modifyStartInfo = null) { return(StartConfigure(cmakeEnv, pathToSource, pathToBuild, new CMakeConfigureConfig() { UserSettings = userSettings }, modifyStartInfo)); }