public ProjectForm(CMakeProject project) { InitializeComponent( ); generatorList.DataSource = m_generators; // default to VS 2015, 64 bit generatorList.SelectedIndex = 7; m_project = project; Text = project.DisplayName; }
private void reloadProjects() { var projectFiles = Directory.GetFiles( CMakeProject.SourceDirectory, "CMakeLists.txt", SearchOption.AllDirectories ); var projects = new ArrayList( ); foreach (var path in projectFiles) { var project = new CMakeProject(path); projects.Add(project); } projectList.DataSource = projects; }
public GenerationForm(CMakeProject project, CMakeGenerator generator, bool shouldClean) { InitializeComponent( ); m_project = project; Text = "Generate " + project.DisplayName; m_binaryDir = Path.GetFullPath( Path.Combine(kIntDirPrefix + generator.IntermediateDirectory, project.DisplayName ) ).Replace('\\', '/'); m_sourceDir = Path.GetDirectoryName(project.Path).Replace('\\', '/'); if (shouldClean) { try { Directory.Delete(m_binaryDir, true); } catch { // ignored } } if (!Directory.Exists(m_binaryDir)) { Directory.CreateDirectory(m_binaryDir); } var cmakeArgs = string.Format( "-D CMAKE_MODULE_PATH:PATH=\"{0}\" -G \"{1}\" \"{2}\"", CMakeProject.ModuleDirectory.Replace('\\', '/'), generator.Name.Replace('\\', '/'), m_sourceDir ); try { m_cmakeProcess = new Process { StartInfo = { CreateNoWindow = true, RedirectStandardError = true, RedirectStandardOutput = true, FileName = CMakeGenerator.ExecutableName, Arguments = cmakeArgs, UseShellExecute = false, WorkingDirectory = m_binaryDir }, EnableRaisingEvents = true }; m_cmakeProcess.OutputDataReceived += cmakeOnData; m_cmakeProcess.ErrorDataReceived += cmakeOnError; m_cmakeProcess.Exited += cmakeOnExit; m_cmakeProcess.Start( ); m_cmakeProcess.BeginOutputReadLine( ); m_cmakeProcess.BeginErrorReadLine( ); } catch { MessageBox.Show( string.Format("Unable to execute \"{0}\".\n\nMake sure your path is correct.", CMakeGenerator.ExecutableName), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); Close( ); } }